@@ -42,6 +42,13 @@ default:
4242 - export DATADOG_API_KEY_PROD=$(aws ssm get-parameter --region us-east-1 --name ci.dd-trace-java.DATADOG_API_KEY_PROD --with-decryption --query "Parameter.Value" --out text)
4343 - export DATADOG_API_KEY_DDSTAGING=$(aws ssm get-parameter --region us-east-1 --name ci.dd-trace-java.dd_api_key --with-decryption --query "Parameter.Value" --out text)
4444
45+ # CI_NODE_INDEX and CI_NODE_TOTAL are 1-indexed and not always set. These steps normalize the numbers for jobs
46+ .normalize_node_index : &normalize_node_index
47+ - echo "CI_NODE_TOTAL=$CI_NODE_TOTAL , CI_NODE_INDEX=$CI_NODE_INDEX"
48+ - export NORMALIZED_NODE_TOTAL=${CI_NODE_TOTAL:-1}
49+ - ONE_INDEXED_NODE_INDEX=${CI_NODE_INDEX:-1}; export NORMALIZED_NODE_INDEX=$((ONE_INDEXED_NODE_INDEX - 1))
50+ - echo "NORMALIZED_NODE_TOTAL=$NORMALIZED_NODE_TOTAL , NORMALIZED_NODE_INDEX=$NORMALIZED_NODE_INDEX"
51+
4552.gradle_build : &gradle_build
4653 image : ghcr.io/datadog/dd-trace-java-docker-build:${JAVA_BUILD_IMAGE_VERSION}-base
4754 stage : build
@@ -68,6 +75,7 @@ default:
6875 before_script :
6976 - export GRADLE_USER_HOME=`pwd`/.gradle
7077 - export GRADLE_ARGS=" --build-cache --stacktrace --no-daemon --parallel --max-workers=$GRADLE_WORKERS"
78+ - *normalize_node_index
7179 # for weird reasons, gradle will always "chmod 700" the .gradle folder
7280 # with Gitlab caching, .gradle is always owned by root and thus gradle's chmod invocation fails
7381 # This dance is a hack to have .gradle owned by the Gitlab runner user
@@ -143,6 +151,49 @@ test_published_artifacts:
143151 paths :
144152 - ./check_reports
145153
154+ .check_job :
155+ extends : .gradle_build
156+ needs : [ build ]
157+ stage : tests
158+ variables :
159+ BUILD_CACHE_TYPE : lib
160+ script :
161+ - ./gradlew $GRADLE_TARGET -PskipTests -PrunBuildSrcTests -PskipSpotless -PtaskPartitionCount=$NORMALIZED_NODE_TOTAL -PtaskPartition=$NORMALIZED_NODE_INDEX $GRADLE_ARGS
162+ after_script :
163+ - .circleci/collect_reports.sh --destination ./check_reports --move
164+ artifacts :
165+ when : always
166+ paths :
167+ - ./check_reports
168+ - ' .gradle/daemon/*/*.out.log'
169+
170+ check_base :
171+ extends : .check_job
172+ variables :
173+ GRADLE_TARGET : " :baseCheck"
174+
175+ check_inst :
176+ extends : .check_job
177+ parallel : 4
178+ variables :
179+ GRADLE_TARGET : " :instrumentationCheck"
180+
181+ check_smoke :
182+ extends : .check_job
183+ parallel : 4
184+ variables :
185+ GRADLE_TARGET : " :smokeCheck"
186+
187+ check_profiling :
188+ extends : .check_job
189+ variables :
190+ GRADLE_TARGET : " :profilingCheck"
191+
192+ check_debugger :
193+ extends : .check_job
194+ variables :
195+ GRADLE_TARGET : " :debuggerCheck"
196+
146197muzzle :
147198 extends : .gradle_build
148199 needs : [ build ]
@@ -154,13 +205,10 @@ muzzle:
154205 BUILD_CACHE_TYPE : test
155206 script :
156207 - export SKIP_BUILDSCAN="true"
157- - echo CI_NODE_INDEX=$CI_NODE_INDEX
158- - echo CI_NODE_TOTAL=CI_NODE_TOTAL
159208 - ./gradlew writeMuzzleTasksToFile $GRADLE_ARGS
160209 - sort workspace/build/muzzleTasks > sortedMuzzleTasks
161- - split --number=l/$CI_NODE_TOTAL --suffix-length=1 --numeric-suffixes sortedMuzzleTasks muzzleSplit
162- - export NODE_ZERO_INDEX=$((CI_NODE_INDEX - 1))
163- - ./gradlew `cat muzzleSplit${NODE_ZERO_INDEX} | xargs` $GRADLE_ARGS
210+ - split --number=l/$NORMALIZED_NODE_TOTAL --suffix-length=1 --numeric-suffixes sortedMuzzleTasks muzzleSplit
211+ - ./gradlew `cat muzzleSplit${NORMALIZED_NODE_INDEX} | xargs` $GRADLE_ARGS
164212 after_script :
165213 - .circleci/collect_reports.sh
166214 artifacts :
@@ -260,6 +308,16 @@ required:
260308 optional : true
261309 - job : agent_integration_tests
262310 optional : true
311+ - job : check_base
312+ optional : true
313+ - job : check_inst
314+ optional : true
315+ - job : check_smoke
316+ optional : true
317+ - job : check_profiling
318+ optional : true
319+ - job : check_debugger
320+ optional : true
263321
264322deploy_to_profiling_backend :
265323 stage : publish
0 commit comments