opentelemetry-java-instrume.../.circleci/config.yml

264 lines
6.5 KiB
YAML

version: 2
defaults: &defaults
working_directory: ~/dd-trace-java
resource_class: large
docker:
- image: circleci/openjdk:8
cache_keys: &cache_keys
# Reset the cache approx every release
keys:
- dd-trace-java-{{ checksum "dd-trace-java.gradle" }}-{{ .Branch }}-{{ .Revision }}
- dd-trace-java-{{ checksum "dd-trace-java.gradle" }}-{{ .Branch }}
- dd-trace-java-{{ checksum "dd-trace-java.gradle" }}
- dd-trace-java
jobs:
build:
<<: *defaults
docker:
- image: circleci/openjdk:8-jdk
steps:
- checkout
- restore_cache:
<<: *cache_keys
- run:
name: Build Project
command: GRADLE_OPTS="-Dorg.gradle.jvmargs=-Xmx2G -Xms512M" ./gradlew clean compileTestGroovy compileTestScala compileTestJava check -x test -x traceAgentTest --build-cache --parallel --stacktrace --no-daemon --max-workers=6
- persist_to_workspace:
root: .
paths:
- workspace
- save_cache:
key: dd-trace-java-{{ checksum "dd-trace-java.gradle" }}-{{ .Branch }}-{{ .Revision }}
paths: ~/.gradle
background: true
default_test_job: &default_test_job
<<: *defaults
steps:
- checkout
- run:
name: Install Additional JVM
command: |
if [ "${INSTALL_ZULU}" != "" ]; then
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0x219BD9C9
echo 'deb http://repos.azulsystems.com/debian stable main' | sudo tee -a /etc/apt/sources.list.d/zulu.list
sudo apt-get update
sudo apt-get install $INSTALL_ZULU
fi
- attach_workspace:
at: .
- restore_cache:
<<: *cache_keys
- run:
name: Run Tests
command: GRADLE_OPTS="-Dorg.gradle.jvmargs=-Xmx2G -Xms512M" ./gradlew $TEST_TASK --build-cache --parallel --stacktrace --no-daemon --max-workers=3
- run:
name: Collect Artifacts
when: always
command: .circleci/collect_artifacts.sh
- store_test_results:
path: ./reports
- store_artifacts:
path: ./artifacts
test_7:
<<: *default_test_job
environment:
- JAVA7_HOME: /usr/lib/jvm/zulu-7-amd64
- TEST_TASK: testJava7
- INSTALL_ZULU: zulu-7
test_8:
<<: *default_test_job
environment:
- JAVA8_HOME: /usr/lib/jvm/java-8-openjdk-amd64
- TEST_TASK: test
test_9:
<<: *default_test_job
environment:
- JAVA9_HOME: /usr/lib/jvm/zulu-9-amd64
- TEST_TASK: testJava9
- INSTALL_ZULU: zulu-9
agent_integration_tests:
<<: *defaults
docker:
- image: circleci/openjdk:8-jdk
- image: datadog/docker-dd-agent
env:
- DD_APM_ENABLED=true
- DD_BIND_HOST=0.0.0.0
- DD_API_KEY=invalid_key_but_this_is_fine
steps:
- checkout
- attach_workspace:
at: .
- restore_cache:
# Reset the cache approx every release
keys:
- dd-trace-java-{{ checksum "dd-trace-java.gradle" }}-{{ .Branch }}-{{ .Revision }}
- dd-trace-java-{{ checksum "dd-trace-java.gradle" }}-{{ .Branch }}
- dd-trace-java-{{ checksum "dd-trace-java.gradle" }}
- dd-trace-java
- run:
name: Run Trace Agent Tests
command: ./gradlew traceAgentTest --build-cache --parallel --stacktrace --no-daemon --max-workers=6
- run:
name: Collect Artifacts
when: always
command: .circleci/collect_artifacts.sh
- store_test_results:
path: ./reports
scan_versions:
<<: *defaults
steps:
- checkout
- restore_cache:
# Reset the cache approx every release
keys:
- dd-trace-java-version-scan-{{ checksum "dd-trace-java.gradle" }}
- dd-trace-java-version-scan
- run:
name: Verify Version Scan
command: ./gradlew verifyVersionScan --parallel --stacktrace --no-daemon --max-workers=6
- run:
name: Collect Artifacts
when: always
command: .circleci/collect_artifacts.sh
- store_test_results:
path: ./reports
- store_artifacts:
path: ./artifacts
- save_cache:
key: dd-trace-java-version-scan-{{ checksum "dd-trace-java.gradle" }}
paths: ~/.gradle
publish: &publish
<<: *defaults
steps:
- checkout
- attach_workspace:
at: .
- restore_cache:
<<: *cache_keys
- run:
name: Decode Signing Key
command: echo $PGP_KEY_FILE | base64 --decode > /home/circleci/dd-trace-java/.circleci/secring.gpg
- deploy:
name: Publish master to Artifactory
command: |
./gradlew -Psigning.keyId=${PGP_KEY_ID} \
-Psigning.password=${PGP_KEY_PASS} \
-Psigning.secretKeyRingFile=/home/circleci/dd-trace-java/.circleci/secring.gpg \
-PbintrayUser=${BINTRAY_USER} \
-PbintrayApiKey=${BINTRAY_API_KEY} \
-PbuildInfo.build.number=${CIRCLE_BUILD_NUM} \
artifactoryPublish --max-workers=1 --build-cache --stacktrace --no-daemon
publish_master:
<<: *publish
publish_tag:
<<: *publish
workflows:
version: 2
build_test_deploy:
jobs:
- build:
filters:
tags:
only: /.*/
- test_7:
requires:
- build
filters:
tags:
only: /.*/
- test_8:
requires:
- build
filters:
tags:
only: /.*/
- test_9:
requires:
- build
filters:
tags:
only: /.*/
- agent_integration_tests:
requires:
- build
filters:
tags:
only: /.*/
- scan_versions:
requires:
- build
filters:
branches:
ignore: master
- publish_master:
requires:
- test_7
- test_8
- test_9
- agent_integration_tests
filters:
branches:
only: master
tags:
ignore: /.*/
- publish_tag:
requires:
- test_7
- test_8
- test_9
- agent_integration_tests
filters:
branches:
ignore: /.*/
tags:
only: /^v.*/