Skip to content

Commit 74ee62c

Browse files
Migrate spotless, muzzle, and test-published-artifacts from CircleCI to Gitlab (#8385)
* Add checks, spotless, and test_published_artifact * reduce to jobs we care about * remove from circleci config * remove spotless as well * add "required" job * fix image tag for fan-in * simplify * only relock during scheduled nightly
1 parent a55351f commit 74ee62c

File tree

2 files changed

+110
-157
lines changed

2 files changed

+110
-157
lines changed

.circleci/config.continue.yml.j2

-150
Original file line numberDiff line numberDiff line change
@@ -365,21 +365,6 @@ jobs:
365365

366366
- display_memory_usage
367367

368-
spotless:
369-
<<: *defaults
370-
resource_class: medium+
371-
372-
steps:
373-
- setup_code
374-
375-
- run:
376-
name: Run spotless
377-
command: >-
378-
JAVA_HOME=$JAVA_11_HOME
379-
./gradlew spotlessCheck
380-
<< pipeline.parameters.gradle_flags >>
381-
--max-workers=8
382-
383368
check:
384369
<<: *defaults
385370

@@ -705,117 +690,6 @@ jobs:
705690
- DD_BIND_HOST=0.0.0.0
706691
- DD_API_KEY=invalid_key_but_this_is_fine
707692

708-
test_published_artifacts:
709-
<<: *defaults
710-
resource_class: medium
711-
docker:
712-
- image: << pipeline.parameters.docker_image >>:{{ docker_image_prefix }}7
713-
714-
steps:
715-
- setup_code
716-
- restore_dependency_cache:
717-
cacheType: lib
718-
- restore_build_cache:
719-
cacheType: lib
720-
721-
- run:
722-
name: Publish Artifacts Locally
723-
command: |
724-
mvn_local_repo=$(./mvnw help:evaluate -Dexpression=settings.localRepository -q -DforceStdout)
725-
rm -rf "${mvn_local_repo}/com/datadoghq"
726-
export GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xmx2G -Xms2G -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp'"
727-
./gradlew publishToMavenLocal << pipeline.parameters.gradle_flags >> --max-workers=3
728-
729-
- run:
730-
name: Test Published Artifacts
731-
command: |
732-
cd test-published-dependencies
733-
export GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xmx512M -Xms512M -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp'"
734-
./gradlew check --info --max-workers=3
735-
736-
- run:
737-
name: Collect Reports
738-
when: on_fail
739-
command: .circleci/collect_reports.sh
740-
741-
- store_artifacts:
742-
path: ./reports
743-
744-
- display_memory_usage
745-
muzzle-dep-report:
746-
<<: *defaults
747-
resource_class: medium
748-
steps:
749-
- setup_code
750-
- skip_unless_matching_files_changed:
751-
pattern: "dd-java-agent/instrumentation"
752-
- restore_dependency_cache:
753-
cacheType: inst
754-
- restore_build_cache:
755-
cacheType: inst
756-
- run:
757-
name: Generate muzzle dep report
758-
command: >-
759-
SKIP_BUILDSCAN="true"
760-
GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xmx2G -Xms2G -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp'"
761-
./gradlew generateMuzzleReport muzzleInstrumentationReport
762-
- run:
763-
name: Collect Reports
764-
command: .circleci/collect_muzzle_deps.sh
765-
- store_artifacts:
766-
path: ./reports
767-
768-
muzzle:
769-
<<: *defaults
770-
resource_class: medium+
771-
parallelism: 4
772-
steps:
773-
- setup_code
774-
775-
- skip_unless_matching_files_changed:
776-
pattern: "dd-java-agent/instrumentation"
777-
778-
# We are not running with a separate cache of all muzzle artifacts here because it gets very big and
779-
# ends up taking more time restoring/saving than the actual increase in time it takes just
780-
# downloading the artifacts each time.
781-
#
782-
# Let's at least restore the build cache to have something to start from.
783-
- restore_dependency_cache:
784-
cacheType: inst
785-
- restore_build_cache:
786-
cacheType: inst
787-
788-
- run:
789-
name: Gather muzzle tasks
790-
command: >-
791-
SKIP_BUILDSCAN="true"
792-
GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xmx2G -Xms2G -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp'"
793-
./gradlew writeMuzzleTasksToFile
794-
<< pipeline.parameters.gradle_flags >>
795-
--max-workers=3
796-
797-
- run:
798-
name: Verify Muzzle
799-
command: >-
800-
SKIP_BUILDSCAN="true"
801-
GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xmx3G -Xms2G -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp'"
802-
./gradlew `circleci tests split --split-by=timings workspace/build/muzzleTasks | xargs`
803-
<< pipeline.parameters.gradle_flags >>
804-
--max-workers=4
805-
806-
- run:
807-
name: Collect Reports
808-
when: on_fail
809-
command: .circleci/collect_reports.sh
810-
811-
- store_artifacts:
812-
path: ./reports
813-
814-
- store_test_results:
815-
path: workspace/build/muzzle-test-results
816-
817-
- display_memory_usage
818-
819693
system-tests:
820694
machine:
821695
image: ubuntu-2404:current
@@ -1069,7 +943,6 @@ build_test_jobs: &build_test_jobs
1069943
name: build_profiling
1070944
gradleTarget: :profilingTest
1071945
cacheType: profiling
1072-
- spotless
1073946

1074947
- fan_in:
1075948
requires:
@@ -1078,7 +951,6 @@ build_test_jobs: &build_test_jobs
1078951
- build_inst
1079952
- build_smoke
1080953
- build_profiling
1081-
- spotless
1082954
name: ok_to_test
1083955
stage: ok_to_test
1084956

@@ -1427,24 +1299,6 @@ build_test_jobs: &build_test_jobs
14271299
cacheType: base
14281300
testJvm: "8"
14291301

1430-
- test_published_artifacts:
1431-
requires:
1432-
- ok_to_test
1433-
1434-
- muzzle:
1435-
requires:
1436-
- ok_to_test
1437-
filters:
1438-
branches:
1439-
ignore:
1440-
- master
1441-
- project/*
1442-
- release/*
1443-
1444-
- muzzle-dep-report:
1445-
requires:
1446-
- ok_to_test
1447-
14481302
- system-tests:
14491303
requires:
14501304
- ok_to_test
@@ -1465,7 +1319,6 @@ build_test_jobs: &build_test_jobs
14651319

14661320
- fan_in:
14671321
requires:
1468-
- test_published_artifacts
14691322
{% for jdk in all_jdks %}
14701323
- "test_{{ jdk }}_profiling"
14711324
{% endfor %}
@@ -1474,7 +1327,6 @@ build_test_jobs: &build_test_jobs
14741327

14751328
- fan_in:
14761329
requires:
1477-
- test_published_artifacts
14781330
{% for jdk in all_jdks %}
14791331
- "test_{{ jdk }}_debugger"
14801332
{% endfor %}
@@ -1486,13 +1338,11 @@ build_test_jobs: &build_test_jobs
14861338
- fan_in:
14871339
requires:
14881340
- check
1489-
- test_published_artifacts
14901341
- agent_integration_tests
14911342
{% for jdk in all_jdks %}
14921343
- "test_{{ jdk }}"
14931344
{% endfor %}
14941345
- test_inst_latest
1495-
- muzzle
14961346
- profiling
14971347
- debugger
14981348
- system-tests

.gitlab-ci.yml

+110-7
Original file line numberDiff line numberDiff line change
@@ -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

2728
default:
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

6272
build:
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+
93194
deploy_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

Comments
 (0)