mirror of
https://github.com/datahub-project/datahub.git
synced 2025-07-03 07:09:21 +00:00

Enable use of gradle for all image builds for publishing, eliminating the per-image build action in docker-unified.yml that duplicated what was in gradle but used slightly different mechanisms to determine what is the tag. Enabled gradle build to consume tags provided by the workflow and produce tags same as earlier. Use bake matrix builds to build slim/full versions of datahub-ingestion, datahub-actions. Publish images and scan relies on gradle to get the list of images, via depot. Image publish and scans run once a day on schedule or on manual triggers only. Pending work: Separate the publish and scans into a separate workflow that runs on a schedule and could also run other tests.
135 lines
4.7 KiB
Groovy
135 lines
4.7 KiB
Groovy
plugins {
|
|
id 'org.springframework.boot'
|
|
id 'java'
|
|
}
|
|
|
|
apply from: '../../gradle/coverage/java-coverage.gradle'
|
|
apply from: "../../gradle/versioning/versioning.gradle"
|
|
apply from: "../../gradle/docker/docker.gradle"
|
|
|
|
ext {
|
|
docker_repo = 'datahub-gms'
|
|
}
|
|
|
|
ext.apiProject = project(':metadata-service:restli-api')
|
|
|
|
dependencies {
|
|
implementation project(':metadata-service:factories')
|
|
implementation project(':metadata-service:auth-filter')
|
|
implementation project(':metadata-service:servlet')
|
|
implementation project(':metadata-service:auth-servlet-impl')
|
|
implementation project(':metadata-service:graphql-servlet-impl')
|
|
implementation project(':metadata-service:openapi-servlet')
|
|
implementation project(':metadata-service:openapi-entity-servlet')
|
|
implementation project(':metadata-service:openapi-analytics-servlet')
|
|
implementation project(':metadata-service:schema-registry-servlet')
|
|
implementation project(':metadata-service:iceberg-catalog')
|
|
implementation 'org.apache.iceberg:iceberg-core:1.6.1'
|
|
runtimeOnly project(':metadata-jobs:mce-consumer')
|
|
runtimeOnly project(':metadata-jobs:mae-consumer')
|
|
runtimeOnly project(':metadata-jobs:pe-consumer')
|
|
|
|
runtimeOnly externalDependency.awsSecretsManagerJdbc
|
|
runtimeOnly externalDependency.h2
|
|
runtimeOnly externalDependency.mariadbConnector
|
|
runtimeOnly externalDependency.mysqlConnector
|
|
runtimeOnly externalDependency.postgresql
|
|
|
|
implementation(externalDependency.springBootStarterWeb) {
|
|
exclude module: "spring-boot-starter-tomcat"
|
|
}
|
|
implementation(externalDependency.springBootStarterJetty) {
|
|
exclude group: 'org.apache.tomcat.embed', module: 'tomcat-embed-el'
|
|
}
|
|
implementation(externalDependency.springBootStarterValidation) {
|
|
exclude group: 'org.apache.tomcat.embed', module: 'tomcat-embed-el'
|
|
}
|
|
|
|
implementation externalDependency.jettyJmx
|
|
implementation externalDependency.springWebMVC
|
|
implementation externalDependency.springBootAutoconfigure
|
|
implementation externalDependency.servletApi
|
|
runtimeOnly externalDependency.opentelemetryExporter
|
|
runtimeOnly externalDependency.openTelemetryExporterLogging
|
|
runtimeOnly externalDependency.openTelemetryExporterCommon
|
|
|
|
implementation spec.product.pegasus.restliDocgen
|
|
implementation spec.product.pegasus.restliSpringBridge
|
|
|
|
compileOnly externalDependency.lombok
|
|
annotationProcessor externalDependency.lombok
|
|
runtimeOnly externalDependency.log4jCore
|
|
runtimeOnly externalDependency.log4j2Api
|
|
runtimeOnly externalDependency.logbackClassic
|
|
implementation externalDependency.awsMskIamAuth
|
|
testRuntimeOnly externalDependency.logbackClassic
|
|
implementation externalDependency.charle
|
|
|
|
testImplementation externalDependency.testng
|
|
testImplementation externalDependency.springBootTest
|
|
testRuntimeOnly externalDependency.logbackClassic
|
|
}
|
|
configurations.all{
|
|
exclude group: "com.charleskorn.kaml", module:"kaml"
|
|
}
|
|
|
|
tasks.register('run') {
|
|
group = 'application' // Add a group for better organization
|
|
description = 'Runs the application with Gretty'
|
|
dependsOn 'bootRun' // spring task
|
|
}
|
|
|
|
bootJar {
|
|
// backwards compatible with old war archive name
|
|
archiveFileName = 'war.war'
|
|
mainClass = 'com.linkedin.gms.GMSApplication'
|
|
}
|
|
|
|
bootRun {
|
|
environment "SCHEMA_REGISTRY_TYPE", "INTERNAL"
|
|
environment "KAFKA_SCHEMAREGISTRY_URL", "http://localhost:8080/schema-registry/api"
|
|
}
|
|
|
|
docker {
|
|
dependsOn bootJar
|
|
name "${docker_registry}/${docker_repo}:${versionTag}"
|
|
dockerfile file("${rootProject.projectDir}/docker/${docker_repo}/Dockerfile")
|
|
files bootJar.outputs.files
|
|
files fileTree(rootProject.projectDir) {
|
|
include '.dockerignore'
|
|
include 'docker/monitoring/*'
|
|
include "docker/${docker_repo}/*"
|
|
include 'metadata-models/src/main/resources/*'
|
|
}.exclude {
|
|
i -> (!i.file.name.endsWith(".dockerignore") && i.file.isHidden())
|
|
}
|
|
additionalTag("Debug", "${docker_registry}/${docker_repo}:debug")
|
|
|
|
// Add build args if they are defined (needed for some CI or enterprise environments)
|
|
def dockerBuildArgs = [:]
|
|
if (project.hasProperty('alpineApkRepositoryUrl')) {
|
|
dockerBuildArgs.ALPINE_REPO_URL = project.getProperty('alpineApkRepositoryUrl')
|
|
}
|
|
if (project.hasProperty('githubMirrorUrl')) {
|
|
dockerBuildArgs.GITHUB_REPO_URL = project.getProperty('githubMirrorUrl')
|
|
}
|
|
if (project.hasProperty('mavenCentralRepositoryUrl')) {
|
|
dockerBuildArgs.MAVEN_CENTRAL_REPO_URL = project.getProperty('mavenCentralRepositoryUrl')
|
|
}
|
|
|
|
if (dockerBuildArgs.size() > 0) {
|
|
buildArgs(dockerBuildArgs)
|
|
}
|
|
|
|
debugBuildArgs = [APP_ENV: 'dev']
|
|
}
|
|
|
|
test {
|
|
jacoco {
|
|
// This contains quickstart tested code for jetty startup
|
|
excludes = ["com.linkedin.gms.CommonApplicationConfig",
|
|
"com.linkedin.gms.ServletConfig",
|
|
"com.linkedin.gms.GMSApplication"]
|
|
}
|
|
}
|