318 lines
7.2 KiB
YAML
318 lines
7.2 KiB
YAML
version: 2.1
|
|
|
|
defaults: &defaults
|
|
working_directory: ~/dd-trace-java
|
|
resource_class: xlarge
|
|
docker:
|
|
- image: &default_container datadog/dd-trace-java-docker-build:latest
|
|
environment:
|
|
JAVA_HOME: /usr/local/openjdk-11
|
|
|
|
cache_keys: &cache_keys
|
|
keys:
|
|
# Rev the version when the cache gets too big
|
|
- trace-java-v1-{{ .Branch }}-{{ .Revision }}
|
|
- trace-java-v1-{{ .Branch }}
|
|
|
|
parameters:
|
|
gradle_flags:
|
|
type: string
|
|
default: "--stacktrace --no-daemon"
|
|
|
|
jobs:
|
|
build:
|
|
<<: *defaults
|
|
|
|
steps:
|
|
- checkout
|
|
|
|
- restore_cache:
|
|
<<: *cache_keys
|
|
|
|
- run:
|
|
name: Build Project
|
|
command: >-
|
|
GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xmx1G -Xms64M' -Dota.forkedMaxHeapSize=1G -Dota.forkedMinHeapSize=64M"
|
|
./gradlew clean build shadowJar -x test
|
|
<< pipeline.parameters.gradle_flags >>
|
|
--max-workers=8
|
|
|
|
- run:
|
|
name: Collect Libs
|
|
when: always
|
|
command: .circleci/collect_libs.sh
|
|
|
|
- store_artifacts:
|
|
path: ./libs
|
|
|
|
- run:
|
|
name: Collect Reports
|
|
when: on_fail
|
|
command: .circleci/collect_reports.sh
|
|
|
|
- store_artifacts:
|
|
path: ./reports
|
|
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths:
|
|
- .gradle
|
|
- workspace
|
|
|
|
- save_cache:
|
|
key: trace-java-v1-{{ .Branch }}-{{ .Revision }}
|
|
paths: ~/.gradle
|
|
|
|
|
|
default_test_job: &default_test_job
|
|
<<: *defaults
|
|
|
|
docker:
|
|
- image: *default_container
|
|
environment:
|
|
JAVA_HOME: /usr/local/openjdk-11
|
|
# This is used by spymemcached instrumentation tests
|
|
- image: memcached
|
|
# This is used by rabbitmq instrumentation tests
|
|
- image: rabbitmq
|
|
|
|
parameters:
|
|
testTask:
|
|
type: string
|
|
prefixTestTask:
|
|
default: false
|
|
type: boolean
|
|
|
|
steps:
|
|
- checkout
|
|
|
|
- attach_workspace:
|
|
at: .
|
|
|
|
- restore_cache:
|
|
<<: *cache_keys
|
|
|
|
- run:
|
|
name: Run Tests
|
|
command: >-
|
|
GRADLE_OPTS="-Dota.forkedMaxHeapSize=4G -Dota.forkedMinHeapSize=64M"
|
|
./gradlew <<# parameters.prefixTestTask>>testJava<</ parameters.prefixTestTask>><< parameters.testTask >>
|
|
<< pipeline.parameters.gradle_flags >>
|
|
--max-workers=6
|
|
|
|
- run:
|
|
name: Collect Reports
|
|
when: on_fail
|
|
command: .circleci/collect_reports.sh
|
|
|
|
- store_artifacts:
|
|
path: ./reports
|
|
|
|
- run:
|
|
name: Collect Test Results
|
|
when: always
|
|
command: .circleci/collect_results.sh
|
|
|
|
- store_test_results:
|
|
path: ./results
|
|
|
|
muzzle:
|
|
<<: *defaults
|
|
parallelism: 8
|
|
steps:
|
|
- checkout
|
|
|
|
# We are not running with a cache here because it gets very big and ends up taking more time
|
|
# restoring/saving than the actual increase in time it takes just downloading the artifacts each time.
|
|
|
|
- run:
|
|
name: Gather muzzle tasks
|
|
command: SKIP_BUILDSCAN="true" ./gradlew writeMuzzleTasksToFile --stacktrace --no-daemon
|
|
- run:
|
|
name: Verify Muzzle
|
|
command: >-
|
|
SKIP_BUILDSCAN="true"
|
|
GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xmx4G -Xms64M' -Dota.forkedMaxHeapSize=4G -Dota.forkedMinHeapSize=64M"
|
|
./gradlew `circleci tests split workspace/build/muzzleTasks | xargs` --parallel --stacktrace --no-daemon --max-workers=16
|
|
|
|
publish: &publish
|
|
<<: *defaults
|
|
steps:
|
|
- checkout
|
|
|
|
- attach_workspace:
|
|
at: .
|
|
|
|
- restore_cache:
|
|
<<: *cache_keys
|
|
|
|
- deploy:
|
|
name: Publish master to Artifactory
|
|
command: |
|
|
./gradlew \
|
|
-PbuildInfo.build.number=${CIRCLE_BUILD_NUM} \
|
|
snapshot --max-workers=1 --build-cache --stacktrace --no-daemon
|
|
|
|
publish_master:
|
|
<<: *publish
|
|
|
|
release:
|
|
<<: *defaults
|
|
steps:
|
|
- checkout
|
|
|
|
- attach_workspace:
|
|
at: .
|
|
|
|
- restore_cache:
|
|
<<: *cache_keys
|
|
|
|
- run:
|
|
command: ./gradlew -Prelease.useLastTag=true final
|
|
no_output_timeout: 6h
|
|
|
|
patch_release:
|
|
<<: *defaults
|
|
steps:
|
|
- checkout
|
|
- run: |
|
|
if [[ $(git tag --points-at HEAD | grep "^v") ]]; then
|
|
echo "Don't make patch release on commit which already has version tag"
|
|
circleci-agent step halt
|
|
fi
|
|
|
|
- attach_workspace:
|
|
at: .
|
|
|
|
- restore_cache:
|
|
<<: *cache_keys
|
|
|
|
- run: ./gradlew -Prelease.scope=patch final
|
|
|
|
|
|
workflows:
|
|
build_test_deploy:
|
|
jobs:
|
|
- build:
|
|
filters:
|
|
tags:
|
|
only: /.*/
|
|
|
|
- default_test_job:
|
|
requires:
|
|
- build
|
|
prefixTestTask: true
|
|
name: test_<< matrix.testTask >>
|
|
matrix:
|
|
parameters:
|
|
testTask: ["8"]
|
|
filters:
|
|
tags:
|
|
only: /.*/
|
|
|
|
- default_test_job:
|
|
requires:
|
|
- build
|
|
name: test_latest
|
|
testTask: latestDepTest
|
|
filters:
|
|
tags:
|
|
only: /.*/
|
|
|
|
- muzzle:
|
|
requires:
|
|
- build
|
|
filters:
|
|
branches:
|
|
ignore: master
|
|
|
|
- publish_master:
|
|
requires:
|
|
- test_8
|
|
- test_latest
|
|
- muzzle
|
|
filters:
|
|
branches:
|
|
only: master
|
|
tags:
|
|
ignore: /.*/
|
|
|
|
nightly_snapshot:
|
|
triggers:
|
|
- schedule:
|
|
cron: "0 0 * * *"
|
|
filters:
|
|
branches:
|
|
only:
|
|
- depends-on-otel-java-snapshot
|
|
jobs:
|
|
- default_test_job:
|
|
name: test_11
|
|
testTask: test jacocoTestReport jacocoTestCoverageVerification
|
|
|
|
release:
|
|
jobs:
|
|
- release:
|
|
filters:
|
|
branches:
|
|
ignore: /.*/
|
|
tags:
|
|
# Only for major and minor releases
|
|
only: /^v.*\.0$/
|
|
|
|
patch_release:
|
|
jobs:
|
|
- build:
|
|
filters:
|
|
branches:
|
|
only: /\d+\.\d+\.x$/
|
|
|
|
- default_test_job:
|
|
requires:
|
|
- build
|
|
prefixTestTask: true
|
|
name: test_<< matrix.testTask >>
|
|
matrix:
|
|
parameters:
|
|
testTask: ["7", "8", "14"]
|
|
filters:
|
|
branches:
|
|
only: /\d+\.\d+\.x$/
|
|
|
|
- default_test_job:
|
|
requires:
|
|
- build
|
|
name: test_11
|
|
testTask: test jacocoTestReport jacocoTestCoverageVerification
|
|
filters:
|
|
branches:
|
|
only: /\d+\.\d+\.x$/
|
|
|
|
- default_test_job:
|
|
requires:
|
|
- build
|
|
name: test_latest
|
|
testTask: latestDepTest
|
|
filters:
|
|
branches:
|
|
only: /\d+\.\d+\.x$/
|
|
|
|
- muzzle:
|
|
requires:
|
|
- build
|
|
filters:
|
|
branches:
|
|
only: /\d+\.\d+\.x$/
|
|
|
|
- patch_release:
|
|
requires:
|
|
- test_7
|
|
- test_8
|
|
- test_11
|
|
- test_14
|
|
- test_latest
|
|
- muzzle
|
|
filters:
|
|
branches:
|
|
only: /\d+\.\d+\.x$/
|