@@ -62,6 +62,10 @@ variables:
6262 description : " Enable flaky tests"
6363 value : " false"
6464
65+ JAVA_PROFILER_REF :
66+ description : " When non-empty, clone DataDog/java-profiler at this Git ref (branch or tag), build ddprof, and use it as ddprof.jar for Gradle jobs instead of the Maven dependency."
67+ value : " paul.fournillon/wallclock_precheck"
68+
6569 # One pipeline injection package size ratchet
6670 OCI_PACKAGE_MAX_SIZE_BYTES : 40_000_000
6771 LIB_INJECTION_IMAGE_MAX_SIZE_BYTES : 40_000_000
@@ -165,9 +169,21 @@ default:
165169 echo "Failed to find base ref for PR" >&2
166170 fi
167171
172+ # When build_java_profiler_ddprof ran, its artifact is available at custom-ddprof/ddprof.jar.
173+ # Append root project property expected by dd-java-agent/ddprof-lib/build.gradle.
174+ .inject_custom_ddprof_jar : &inject_custom_ddprof_jar
175+ - |
176+ if [ -f "${CI_PROJECT_DIR}/custom-ddprof/ddprof.jar" ]; then
177+ echo "ddprof.jar=${CI_PROJECT_DIR}/custom-ddprof/ddprof.jar" >> gradle.properties
178+ echo "Using custom ddprof.jar from java-profiler build"
179+ fi
180+
168181.gradle_build : &gradle_build
169182 image : ${BUILDER_IMAGE_REPO}:${BUILDER_IMAGE_VERSION_PREFIX}base
170183 stage : build
184+ needs :
185+ - job : build_java_profiler_ddprof
186+ optional : true
171187 variables :
172188 MAVEN_OPTS : " -Xms256M -Xmx1024M"
173189 GRADLE_WORKERS : 6
@@ -217,6 +233,7 @@ default:
217233 org.gradle.java.installations.auto-download=false
218234 org.gradle.java.installations.fromEnv=$JAVA_HOMES
219235 EOF
236+ - *inject_custom_ddprof_jar
220237 - mkdir -p .gradle
221238 - export GRADLE_USER_HOME=$(pwd)/.gradle
222239 # replace maven central part by MAVEN_REPOSITORY_PROXY in .mvn/wrapper/maven-wrapper.properties
@@ -292,8 +309,43 @@ dd-octo-sts-pre-release-check:
292309 max : 2
293310 when : always
294311
312+ # Builds java-profiler from JAVA_PROFILER_REF and publishes custom-ddprof/ddprof.jar for downstream Gradle jobs.
313+ # Requires JDK 17+ for Gradle 9 and native toolchain for ddprof release (same base image as .gradle_build).
314+ build_java_profiler_ddprof :
315+ image : ${BUILDER_IMAGE_REPO}:${BUILDER_IMAGE_VERSION_PREFIX}base
316+ stage : build
317+ rules :
318+ - if : ' $JAVA_PROFILER_REF =~ /.+/'
319+ when : on_success
320+ variables :
321+ FF_USE_FASTZIP : " true"
322+ CACHE_COMPRESSION_LEVEL : " slowest"
323+ KUBERNETES_CPU_REQUEST : 10
324+ KUBERNETES_MEMORY_REQUEST : 20Gi
325+ KUBERNETES_MEMORY_LIMIT : 20Gi
326+ script :
327+ - |
328+ set -euo pipefail
329+ mkdir -p "${CI_PROJECT_DIR}/custom-ddprof"
330+ SRCDIR="${CI_PROJECT_DIR}/java-profiler-src"
331+ rm -rf "$SRCDIR"
332+ git clone --depth 1 --branch "$JAVA_PROFILER_REF" https://github.com/DataDog/java-profiler.git "$SRCDIR"
333+ cd "$SRCDIR"
334+ chmod +x ./gradlew
335+ ./gradlew --version
336+ ./gradlew assembleRelease -Pskip-tests -Pskip-gtest
337+ JAR=$(ls ddprof-lib/build/libs/ddprof-*.jar | grep -v -- '-sources' | head -1)
338+ cp "$JAR" "${CI_PROJECT_DIR}/custom-ddprof/ddprof.jar"
339+ ls -la "${CI_PROJECT_DIR}/custom-ddprof/"
340+ artifacts :
341+ when : on_success
342+ paths :
343+ - custom-ddprof/ddprof.jar
344+
295345build :
296346 needs :
347+ - job : build_java_profiler_ddprof
348+ optional : true
297349 - job : maven-central-pre-release-check
298350 optional : true
299351 - job : dd-octo-sts-pre-release-check
@@ -404,7 +456,9 @@ publish-artifacts-to-s3:
404456spotless :
405457 extends : .gradle_build
406458 stage : tests
407- needs : []
459+ needs :
460+ - job : build_java_profiler_ddprof
461+ optional : true
408462 variables :
409463 GRADLE_MEMORY_MAX : 6G
410464 script :
@@ -414,15 +468,19 @@ spotless:
414468check-instrumentation-naming :
415469 extends : .gradle_build
416470 stage : tests
417- needs : [ ]
471+ needs :
472+ - job : build_java_profiler_ddprof
473+ optional : true
418474 script :
419475 - ./gradlew --version
420476 - ./gradlew checkInstrumentationNaming
421477
422478config-inversion-linter :
423479 extends : .gradle_build
424480 stage : tests
425- needs : []
481+ needs :
482+ - job : build_java_profiler_ddprof
483+ optional : true
426484 script :
427485 - ./gradlew --version
428486 - ./gradlew checkConfigurations
@@ -431,7 +489,10 @@ test_published_artifacts:
431489 extends : .gradle_build
432490 image : ${BUILDER_IMAGE_REPO}:${BUILDER_IMAGE_VERSION_PREFIX}7 # Needs Java7 for some tests
433491 stage : tests
434- needs : [ build ]
492+ needs :
493+ - job : build_java_profiler_ddprof
494+ optional : true
495+ - build
435496 variables :
436497 CACHE_TYPE : " lib"
437498 script :
@@ -458,7 +519,10 @@ test_published_artifacts:
458519
459520.check_job :
460521 extends : .gradle_build
461- needs : [ build ]
522+ needs :
523+ - job : build_java_profiler_ddprof
524+ optional : true
525+ - build
462526 stage : tests
463527 variables :
464528 CACHE_TYPE : " lib"
@@ -494,7 +558,9 @@ test_published_artifacts:
494558
495559check_build_src :
496560 extends : .check_job
497- needs : []
561+ needs :
562+ - job : build_java_profiler_ddprof
563+ optional : true
498564 variables :
499565 GRADLE_TARGET : " :buildSrc:build"
500566
@@ -529,7 +595,10 @@ check_debugger:
529595
530596muzzle :
531597 extends : .gradle_build
532- needs : [ build_tests ]
598+ needs :
599+ - job : build_java_profiler_ddprof
600+ optional : true
601+ - build_tests
533602 stage : tests
534603 parallel :
535604 matrix :
@@ -561,7 +630,10 @@ muzzle:
561630
562631muzzle-dep-report :
563632 extends : .gradle_build
564- needs : [ build_tests ]
633+ needs :
634+ - job : build_java_profiler_ddprof
635+ optional : true
636+ - build_tests
565637 stage : tests
566638 variables :
567639 CACHE_TYPE : " inst"
@@ -598,7 +670,10 @@ muzzle-dep-report:
598670 extends : .gradle_build
599671 image : ${BUILDER_IMAGE_REPO}:${BUILDER_IMAGE_VERSION_PREFIX}$testJvm
600672 tags : [ "docker-in-docker:amd64" ] # use docker-in-docker runner for testcontainers
601- needs : [ build_tests ]
673+ needs :
674+ - job : build_java_profiler_ddprof
675+ optional : true
676+ - build_tests
602677 stage : tests
603678 variables :
604679 GRADLE_PARAMS : " -PskipFlakyTests"
@@ -896,7 +971,10 @@ deploy_to_di_backend:manual:
896971deploy_to_maven_central :
897972 extends : .gradle_build
898973 stage : publish
899- needs : [ build ]
974+ needs :
975+ - job : build_java_profiler_ddprof
976+ optional : true
977+ - build
900978 variables :
901979 CACHE_TYPE : " lib"
902980 rules :
@@ -924,7 +1002,10 @@ deploy_to_maven_central:
9241002deploy_snapshot_with_ddprof_snapshot :
9251003 extends : .gradle_build
9261004 stage : publish
927- needs : [ build ]
1005+ needs :
1006+ - job : build_java_profiler_ddprof
1007+ optional : true
1008+ - build
9281009 variables :
9291010 CACHE_TYPE : " lib"
9301011 rules :
0 commit comments