diff --git a/.circleci/config.yml b/.circleci/config.yml index 9202a9c92..8ee578a94 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -3,53 +3,62 @@ # To manually manage the CircleCI configuration for this project, remove the .circleci/template.sh file. version: 2 + +build-defaults: &build-defaults + resource_class: xlarge + environment: + GRADLE_OPTS: -Dorg.gradle.console=plain -Dorg.gradle.internal.launcher.welcomeMessageEnabled=false + CIRCLE_TEST_REPORTS: /home/circleci/junit + CIRCLE_ARTIFACTS: /home/circleci/artifacts + jobs: build: - docker: - - image: circleci/openjdk:8u171-jdk-node-browsers - resource_class: xlarge - environment: - GRADLE_OPTS: -Dorg.gradle.console=plain -Dorg.gradle.internal.launcher.welcomeMessageEnabled=false - CIRCLE_TEST_REPORTS: /home/circleci/junit - CIRCLE_ARTIFACTS: /home/circleci/artifacts - + docker: [{ image: 'circleci/openjdk:8u181-node' }] + <<: *build-defaults steps: - checkout - - restore_cache: - key: gradle-wrapper-{{ checksum "gradle/wrapper/gradle-wrapper.properties" }} - - restore_cache: - key: gradle-cache-{{ checksum "versions.props" }}-{{ checksum "build.gradle" }} - - - run: ./gradlew --profile --parallel resolveConfigurations - + - restore_cache: { key: 'gradle-wrapper-{{ checksum "gradle/wrapper/gradle-wrapper.properties" }}' } + - restore_cache: { key: 'gradle-cache-{{ checksum "versions.props" }}-{{ checksum "build.gradle" }}' } + - run: ./gradlew --no-daemon --parallel --stacktrace --continue --max-workers=8 --profile build - save_cache: - key: gradle-wrapper-{{ checksum "gradle/wrapper/gradle-wrapper.properties" }} - paths: - - ~/.gradle/wrapper + key: 'gradle-wrapper-{{ checksum "gradle/wrapper/gradle-wrapper.properties" }}' + paths: [ ~/.gradle/wrapper ] - save_cache: - key: gradle-cache-{{ checksum "versions.props" }}-{{ checksum "build.gradle" }} - paths: - - ~/.gradle/caches - - - run: ./gradlew --profile --parallel --continue build - + key: 'gradle-cache-v2-{{ checksum "versions.props" }}-{{ checksum "build.gradle" }}' + paths: [ ~/.gradle/caches ] - run: - command: | - mkdir -p ~/junit - find . -type f -regex ".*/build/.*TEST.*xml" -exec cp --parents {} ~/junit/ \; + command: mkdir -p ~/junit && find . -type f -regex ".*/build/.*TEST.*xml" -exec cp --parents {} ~/junit/ \; when: always - - deploy: command: | # publishing snapshots to bintray does not work, so we only publish from tag builds (not develop) if [[ "${CIRCLE_TAG}" =~ [0-9]+(\.[0-9]+)+(-[a-zA-Z]+[0-9]*)* ]]; then - ./gradlew --profile --stacktrace --continue publish + ./gradlew --no-daemon --parallel --stacktrace --continue --max-workers=8 --profile publish else - ./gradlew --profile --parallel --continue publishToMavenLocal + ./gradlew --no-daemon --parallel --stacktrace --continue --max-workers=8 --profile publishToMavenLocal mkdir -p $CIRCLE_ARTIFACTS/poms find . -name 'pom-default.xml' -exec cp --parents {} $CIRCLE_ARTIFACTS/poms \; fi + - store_test_results: { path: ~/junit } + - store_artifacts: { path: ~/artifacts } + build-11: + docker: [{ image: 'circleci/openjdk:11-node' }] + <<: *build-defaults + steps: + - checkout + - restore_cache: { key: 'gradle-wrapper-{{ checksum "gradle/wrapper/gradle-wrapper.properties" }}' } + - restore_cache: { key: 'gradle-cache-{{ checksum "versions.props" }}-{{ checksum "build.gradle" }}' } + - run: ./gradlew --no-daemon --parallel --stacktrace --continue --max-workers=8 --profile build + - save_cache: + key: 'gradle-wrapper-{{ checksum "gradle/wrapper/gradle-wrapper.properties" }}' + paths: [ ~/.gradle/wrapper ] + - save_cache: + key: 'gradle-cache-v2-{{ checksum "versions.props" }}-{{ checksum "build.gradle" }}' + paths: [ ~/.gradle/caches ] + - run: + command: mkdir -p ~/junit && find . -type f -regex ".*/build/.*TEST.*xml" -exec cp --parents {} ~/junit/ \; + when: always - store_test_results: { path: ~/junit } - store_artifacts: { path: ~/artifacts } @@ -58,7 +67,8 @@ workflows: build: jobs: - build: - filters: - # CircleCI2 will ignore tags without this. https://circleci.com/docs/2.0/workflows/#git-tag-job-execution - tags: - only: /.*/ + # CircleCI2 will ignore tags without this. https://circleci.com/docs/2.0/workflows/#git-tag-job-execution + filters: { tags: { only: /.*/ } } + - build-11: + # CircleCI2 will ignore tags without this. https://circleci.com/docs/2.0/workflows/#git-tag-job-execution + filters: { tags: { only: /.*/ } }