@@ -23,15 +23,24 @@ variables:
2323 DEPENDENCY_CACHE_POLICY : pull
2424 BUILD_CACHE_POLICY : pull
2525 GRADLE_VERSION : " 8.4" # must match gradle-wrapper.properties
26+ JAVA_BUILD_IMAGE_VERSION : " v25.01"
2627
2728default :
2829 tags : [ "arch:amd64" ]
2930
31+ .fan_in :
32+ stage : tests
33+ image : registry.ddbuild.io/images/base/gbi-ubuntu_2204-slim:release
34+ script :
35+ - echo "done"
36+
3037.gradle_build : &gradle_build
31- image : ghcr.io/datadog/dd-trace-java-docker-build:v25.01-base
38+ image : ghcr.io/datadog/dd-trace-java-docker-build:${JAVA_BUILD_IMAGE_VERSION}-base
39+ stage : build
3240 variables :
33- GRADLE_OPTS : " -Dorg.gradle.jvmargs='-Xmx2560M -Xms2560M'"
34- GRADLE_ARGS : " -PskipTests --build-cache --stacktrace --no-daemon --parallel --max-workers=2"
41+ GRADLE_OPTS : " -Dorg.gradle.jvmargs='-Xmx2560M -Xms2560M -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp'"
42+ MAVEN_OPTS : " -Xms64M -Xmx512M"
43+ GRADLE_WORKERS : 2
3544 KUBERNETES_CPU_REQUEST : 8
3645 KUBERNETES_MEMORY_REQUEST : 6Gi
3746 cache :
@@ -42,14 +51,15 @@ default:
4251 - .gradle/caches
4352 - .gradle/notifications
4453 policy : $DEPENDENCY_CACHE_POLICY
45- - key : $CI_PIPELINE_ID # Incremental build cache. Shared by all jobs in the pipeline
54+ - key : $CI_PIPELINE_ID-$BUILD_CACHE_TYPE # Incremental build cache. Shared by all jobs in the pipeline of the same type
4655 paths :
4756 - .gradle/caches/$GRADLE_VERSION
4857 - .gradle/$GRADLE_VERSION/executionHistory
4958 - workspace
5059 policy : $BUILD_CACHE_POLICY
5160 before_script :
5261 - export GRADLE_USER_HOME=`pwd`/.gradle
62+ - export GRADLE_ARGS=" --build-cache --stacktrace --no-daemon --parallel --max-workers=$GRADLE_WORKERS"
5363 # for weird reasons, gradle will always "chmod 700" the .gradle folder
5464 # with Gitlab caching, .gradle is always owned by root and thus gradle's chmod invocation fails
5565 # This dance is a hack to have .gradle owned by the Gitlab runner user
@@ -61,21 +71,24 @@ default:
6171
6272build :
6373 extends : .gradle_build
64- stage : build
6574 variables :
6675 BUILD_CACHE_POLICY : push
76+ BUILD_CACHE_TYPE : lib
6777 DEPENDENCY_CACHE_POLICY : pull
6878 script :
69- - ./gradlew clean :dd-java-agent:shadowJar :dd-trace-api:jar :dd-trace-ot:shadowJar $GRADLE_ARGS
79+ - if [ $CI_PIPELINE_SOURCE == "schedule" ] ; then ./gradlew resolveAndLockAll --write-locks; fi
80+ - ./gradlew clean :dd-java-agent:shadowJar :dd-trace-api:jar :dd-trace-ot:shadowJar -PskipTests $GRADLE_ARGS
7081 - echo UPSTREAM_TRACER_VERSION=$(java -jar workspace/dd-java-agent/build/libs/*.jar) >> upstream.env
7182 - echo "BUILD_JOB_NAME=$CI_JOB_NAME" >> build.env
7283 - echo "BUILD_JOB_ID=$CI_JOB_ID" >> build.env
7384 artifacts :
85+ when : always
7486 paths :
7587 - ' workspace/dd-java-agent/build/libs/*.jar'
7688 - ' workspace/dd-trace-api/build/libs/*.jar'
7789 - ' workspace/dd-trace-ot/build/libs/*.jar'
7890 - ' upstream.env'
91+ - ' .gradle/daemon/*/*.out.log'
7992 reports :
8093 dotenv : build.env
8194
@@ -90,6 +103,94 @@ build_and_populate_dep_cache:
90103 - when : manual
91104 allow_failure : true
92105
106+ spotless :
107+ extends : .gradle_build
108+ stage : tests
109+ needs : []
110+ script :
111+ - export JAVA_HOME=$JAVA_11_HOME
112+ - ./gradlew spotlessCheck $GRADLE_ARGS
113+
114+ test_published_artifacts :
115+ extends : .gradle_build
116+ image : ghcr.io/datadog/dd-trace-java-docker-build:${JAVA_BUILD_IMAGE_VERSION}-7 # Needs Java7 for some tests
117+ stage : tests
118+ needs : [ build ]
119+ rules :
120+ - if : ' $POPULATE_CACHE'
121+ when : never
122+ - when : on_success
123+ variables :
124+ BUILD_CACHE_TYPE : lib
125+ script :
126+ - mvn_local_repo=$(./mvnw help:evaluate -Dexpression=settings.localRepository -q -DforceStdout)
127+ - rm -rf "${mvn_local_repo}/com/datadoghq"
128+ - export GPG_PRIVATE_KEY=$(aws ssm get-parameter --region us-east-1 --name ci.dd-trace-java.signing.gpg_private_key --with-decryption --query "Parameter.Value" --out text)
129+ - export GPG_PASSWORD=$(aws ssm get-parameter --region us-east-1 --name ci.dd-trace-java.signing.gpg_passphrase --with-decryption --query "Parameter.Value" --out text)
130+ - export GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xmx2G -Xms2G -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp'"
131+ - ./gradlew publishToMavenLocal $GRADLE_ARGS
132+ - cd test-published-dependencies
133+ - export GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xmx512M -Xms512M -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp'"
134+ - ./gradlew check --info $GRADLE_ARGS
135+ after_script :
136+ - .circleci/collect_reports.sh
137+ artifacts :
138+ when : always
139+ paths :
140+ - ./check_reports
141+
142+ muzzle :
143+ extends : .gradle_build
144+ needs : [ build ]
145+ stage : tests
146+ parallel : 8
147+ rules :
148+ - if : ' $POPULATE_CACHE'
149+ when : never
150+ - when : on_success
151+ variables :
152+ BUILD_CACHE_TYPE : test
153+ script :
154+ - export SKIP_BUILDSCAN="true"
155+ - echo CI_NODE_INDEX=$CI_NODE_INDEX
156+ - echo CI_NODE_TOTAL=CI_NODE_TOTAL
157+ - ./gradlew writeMuzzleTasksToFile $GRADLE_ARGS
158+ - sort workspace/build/muzzleTasks > sortedMuzzleTasks
159+ - split --number=l/$CI_NODE_TOTAL --suffix-length=1 --numeric-suffixes sortedMuzzleTasks muzzleSplit
160+ - export NODE_ZERO_INDEX=$((CI_NODE_INDEX - 1))
161+ - ./gradlew `cat muzzleSplit${NODE_ZERO_INDEX} | xargs` $GRADLE_ARGS
162+ after_script :
163+ - .circleci/collect_reports.sh
164+ artifacts :
165+ when : always
166+ paths :
167+ - ./reports
168+ - ' .gradle/daemon/*/*.out.log'
169+
170+ muzzle-dep-report :
171+ extends : .gradle_build
172+ needs : [ build ]
173+ stage : tests
174+ variables :
175+ BUILD_CACHE_TYPE : test
176+ script :
177+ - export SKIP_BUILDSCAN="true"
178+ - ./gradlew generateMuzzleReport muzzleInstrumentationReport $GRADLE_ARGS
179+ after_script :
180+ - .circleci/collect_muzzle_deps.sh
181+ artifacts :
182+ when : always
183+ paths :
184+ - ./reports
185+ - ' .gradle/daemon/*/*.out.log'
186+
187+ required :
188+ extends : .fan_in
189+ needs :
190+ - spotless
191+ - muzzle
192+ - test_published_artifacts
193+
93194deploy_to_profiling_backend :
94195 stage : publish
95196 needs : [ build ]
@@ -165,6 +266,8 @@ deploy_to_sonatype:
165266 extends : .gradle_build
166267 stage : publish
167268 needs : [ build ]
269+ variables :
270+ BUILD_CACHE_TYPE : lib
168271 rules :
169272 - if : ' $POPULATE_CACHE'
170273 when : never
@@ -180,7 +283,7 @@ deploy_to_sonatype:
180283 - export SONATYPE_PASSWORD=$(aws ssm get-parameter --region us-east-1 --name ci.dd-trace-java.sonatype_password --with-decryption --query "Parameter.Value" --out text)
181284 - export GPG_PRIVATE_KEY=$(aws ssm get-parameter --region us-east-1 --name ci.dd-trace-java.signing.gpg_private_key --with-decryption --query "Parameter.Value" --out text)
182285 - export GPG_PASSWORD=$(aws ssm get-parameter --region us-east-1 --name ci.dd-trace-java.signing.gpg_passphrase --with-decryption --query "Parameter.Value" --out text)
183- - ./gradlew -PbuildInfo.build.number=$CI_JOB_ID publishToSonatype closeSonatypeStagingRepository $GRADLE_ARGS
286+ - ./gradlew -PbuildInfo.build.number=$CI_JOB_ID publishToSonatype closeSonatypeStagingRepository -PskipTests $GRADLE_ARGS
184287 artifacts :
185288 paths :
186289 - ' workspace/dd-java-agent/build/libs/*.jar'
0 commit comments