diff --git a/.circleci/config.yml b/.circleci/config.yml index 239f9013c..47f788350 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -4,102 +4,59 @@ version: 2 jobs: - compile: + build: docker: [{ image: 'circleci/openjdk:8u171-node' }] - resource_class: large + 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 - GRADLE_OPTS: -Dorg.gradle.jvmargs='-Xms6144m -Xmx6144m' + _JAVA_OPTIONS: '-Xmx2048m' steps: - checkout - - run: - name: delete_unrelated_tags - command: | - ALL_TAGS=$(git tag --points-at HEAD) - - if [ -z "$ALL_TAGS" ]; then - echo "No-op as there are no tags on the current commit ($(git rev-parse HEAD))" - exit 0 - fi - - if [ -z "${CIRCLE_TAG:+x}" ]; then - echo "Non-tag build, deleting all tags which point to HEAD: [${ALL_TAGS/$'\n'/,}]" - echo "$ALL_TAGS" | while read -r TAG; do git tag -d "$TAG" 1>/dev/null; done - exit 0 - fi - - TAGS_TO_DELETE=$(echo "$ALL_TAGS" | grep -v "^$CIRCLE_TAG$" || :) - if [ -z "$TAGS_TO_DELETE" ]; then - echo "No-op as exactly one tag ($CIRCLE_TAG) points to HEAD" - exit 0 - fi - - echo "Detected tag build, deleting all tags except '$CIRCLE_TAG' which point to HEAD: [${TAGS_TO_DELETE/$'\n'/,}]" - echo "$TAGS_TO_DELETE" | while read -r TAG; do git tag -d "$TAG" 1>/dev/null; done - - restore_cache: { key: 'gradle-wrapper-v2-{{ checksum "gradle/wrapper/gradle-wrapper.properties" }}' } - - restore_cache: { key: 'compile-gradle-cache-v2-{{ checksum "versions.props" }}-{{ checksum "build.gradle" }}' } - - run: ./gradlew --parallel --stacktrace classes testClasses + - 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-v2-{{ checksum "gradle/wrapper/gradle-wrapper.properties" }}' + key: 'gradle-wrapper-{{ checksum "gradle/wrapper/gradle-wrapper.properties" }}' paths: [ ~/.gradle/wrapper ] - save_cache: - key: 'compile-gradle-cache-v2-{{ checksum "versions.props" }}-{{ checksum "build.gradle" }}' - paths: [ ~/.gradle/caches ] - - store_test_results: { path: ~/junit } - - store_artifacts: { path: ~/artifacts } - - persist_to_workspace: - root: /home/circleci - paths: [ project, .gradle/init.gradle ] - - check: - docker: [{ image: 'circleci/openjdk:8u171-node' }] - environment: - GRADLE_OPTS: -Dorg.gradle.jvmargs='-Xms3072m -Xmx3072m' - steps: - - attach_workspace: { at: /home/circleci } - - restore_cache: { key: 'gradle-wrapper-v2-{{ checksum "gradle/wrapper/gradle-wrapper.properties" }}' } - - restore_cache: { key: 'check-gradle-cache-v2-{{ checksum "versions.props" }}-{{ checksum "build.gradle" }}' } - - run: ./gradlew --parallel --stacktrace --continue check -x test - - save_cache: - key: 'check-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 } - - unit-test: - docker: [{ image: 'circleci/openjdk:8u171-node' }] - environment: - GRADLE_OPTS: -Dorg.gradle.jvmargs='-Xms3072m -Xmx3072m' - steps: - - attach_workspace: { at: /home/circleci } - - restore_cache: { key: 'gradle-wrapper-v2-{{ checksum "gradle/wrapper/gradle-wrapper.properties" }}' } - - restore_cache: { key: 'unit-test-gradle-cache-v2-{{ checksum "versions.props" }}-{{ checksum "build.gradle" }}' } - - run: ./gradlew --parallel --stacktrace --continue --max-workers=2 test - - save_cache: - key: 'unit-test-gradle-cache-v2-{{ checksum "versions.props" }}-{{ checksum "build.gradle" }}' + 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 + - 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 --no-daemon --parallel --stacktrace --continue --max-workers=8 --profile publish + else + ./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 } - unit-test-11: - docker: [{ image: 'circleci/openjdk:11-node' }] - resource_class: large + build-13: + docker: [{ image: 'openjdk:13' }] + resource_class: xlarge environment: - GRADLE_OPTS: -Dorg.gradle.jvmargs='-Xms6144m -Xmx6144m' + GRADLE_OPTS: -Dorg.gradle.console=plain -Dorg.gradle.internal.launcher.welcomeMessageEnabled=false + CIRCLE_TEST_REPORTS: /root/junit + CIRCLE_ARTIFACTS: /root/artifacts + _JAVA_OPTIONS: '-XX:ActiveProcessorCount=8 -Xmx2048m' steps: - checkout - - restore_cache: { key: 'gradle-wrapper-v2-{{ checksum "gradle/wrapper/gradle-wrapper.properties" }}' } - - restore_cache: { key: 'unit-test-11-gradle-cache-v2-{{ checksum "versions.props" }}-{{ checksum "build.gradle" }}' } - - run: ./gradlew --parallel --stacktrace --continue test + - 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 build + - save_cache: + key: 'gradle-wrapper-{{ checksum "gradle/wrapper/gradle-wrapper.properties" }}' + paths: [ ~/.gradle/wrapper ] - save_cache: - key: 'unit-test-11-gradle-cache-v2-{{ checksum "versions.props" }}-{{ checksum "build.gradle" }}' + 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/ \; @@ -107,37 +64,6 @@ jobs: - store_test_results: { path: ~/junit } - store_artifacts: { path: ~/artifacts } - trial-publish: - docker: [{ image: 'circleci/openjdk:8u171-node' }] - environment: - GRADLE_OPTS: -Dorg.gradle.jvmargs='-Xms3072m -Xmx3072m' - steps: - - attach_workspace: { at: /home/circleci } - - restore_cache: { key: 'gradle-wrapper-v2-{{ checksum "gradle/wrapper/gradle-wrapper.properties" }}' } - - restore_cache: { key: 'trial-publish-gradle-cache-v2-{{ checksum "versions.props" }}-{{ checksum "build.gradle" }}' } - - run: ./gradlew --stacktrace publishToMavenLocal - - save_cache: - key: 'trial-publish-gradle-cache-v2-{{ checksum "versions.props" }}-{{ checksum "build.gradle" }}' - paths: [ ~/.gradle/caches ] - - store_test_results: { path: ~/junit } - - store_artifacts: { path: ~/artifacts } - - publish: - docker: [{ image: 'circleci/openjdk:8u171-node' }] - environment: - GRADLE_OPTS: -Dorg.gradle.jvmargs='-Xms3072m -Xmx3072m' - steps: - - attach_workspace: { at: /home/circleci } - - restore_cache: { key: 'gradle-wrapper-v2-{{ checksum "gradle/wrapper/gradle-wrapper.properties" }}' } - - restore_cache: { key: 'publish-gradle-cache-v2-{{ checksum "versions.props" }}-{{ checksum "build.gradle" }}' } - - deploy: - command: ./gradlew --parallel --stacktrace --continue publish - - save_cache: - key: 'publish-gradle-cache-v2-{{ checksum "versions.props" }}-{{ checksum "build.gradle" }}' - paths: [ ~/.gradle/caches ] - - store_test_results: { path: ~/junit } - - store_artifacts: { path: ~/artifacts } - markdown: docker: [{ image: 'raviqqe/liche:0.1.1' }] steps: @@ -148,26 +74,12 @@ workflows: version: 2 build: jobs: - - compile: - filters: { tags: { only: /.*/ } } - - - unit-test: - requires: [ compile ] - filters: { tags: { only: /.*/ } } - - - unit-test-11: + - build: + # CircleCI2 will ignore tags without this. https://circleci.com/docs/2.0/workflows/#git-tag-job-execution filters: { tags: { only: /.*/ } } - - - check: - requires: [ compile ] + - build-13: + # CircleCI2 will ignore tags without this. https://circleci.com/docs/2.0/workflows/#git-tag-job-execution filters: { tags: { only: /.*/ } } - - markdown: + # CircleCI2 will ignore tags without this. https://circleci.com/docs/2.0/workflows/#git-tag-job-execution filters: { tags: { only: /.*/ } } - - - trial-publish: - requires: [ compile ] - - - publish: - requires: [ unit-test, unit-test-11, check ] - filters: { tags: { only: /.*/ }, branches: { only: develop } } diff --git a/build.gradle b/build.gradle index b1f04885e..49b2d7a0a 100644 --- a/build.gradle +++ b/build.gradle @@ -25,11 +25,13 @@ buildscript { classpath 'com.github.jengelman.gradle.plugins:shadow:5.1.0' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4' classpath 'com.netflix.nebula:nebula-publishing-plugin:13.2.0' - classpath 'com.palantir.baseline:gradle-baseline-java:1.14.0' + classpath 'com.palantir.baseline:gradle-baseline-java:1.16.0' classpath 'com.palantir.gradle.gitversion:gradle-git-version:0.11.0' - classpath 'gradle.plugin.org.inferred:gradle-processors:2.2.0' classpath 'com.palantir.gradle.consistentversions:gradle-consistent-versions:1.11.2' classpath "me.champeau.gradle:jmh-gradle-plugin:0.4.7" + + // just until baseline upgrades + classpath 'com.diffplug.spotless:spotless-plugin-gradle:3.24.2' } } @@ -39,7 +41,7 @@ apply plugin: 'com.palantir.consistent-versions' repositories { jcenter() - maven { url "http://palantir.bintray.com/releases" } + maven { url "http://palantir.bintray.com/releases" } } allprojects { @@ -49,7 +51,6 @@ allprojects { subprojects { apply plugin: 'java-library' - apply plugin: "org.inferred.processors" repositories { jcenter() @@ -75,6 +76,7 @@ subprojects { '-Xlint:unchecked', '-XepDisableWarningsInGeneratedCode', '-XepExcludedPaths:.*(generated).*', + '-Xep:TypeParameterUnusedInFormals:OFF', // doesn't work on Java 13 https://github.com/google/error-prone/issues/1106 ] } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ef9a9e05e..d644582d2 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.6-bin.zip +distributionUrl=https://services.gradle.org/distributions-snapshots/gradle-6.0-20190821220044+0000-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/tracing-jaxrs/build.gradle b/tracing-jaxrs/build.gradle index 3c5b2db18..238b126d4 100644 --- a/tracing-jaxrs/build.gradle +++ b/tracing-jaxrs/build.gradle @@ -14,8 +14,6 @@ * limitations under the License. */ -apply plugin: 'org.inferred.processors' - apply from: "${rootDir}/gradle/publish-jar.gradle" dependencies { diff --git a/tracing/src/test/java/com/palantir/tracing/DeferredTracerTest.java b/tracing/src/test/java/com/palantir/tracing/DeferredTracerTest.java index 11469f9d5..947a1964c 100644 --- a/tracing/src/test/java/com/palantir/tracing/DeferredTracerTest.java +++ b/tracing/src/test/java/com/palantir/tracing/DeferredTracerTest.java @@ -44,7 +44,7 @@ public void testIsSerializable() throws IOException, ClassNotFoundException { try (ObjectInputStream objectInputStream = new ObjectInputStream(bais)) { DeferredTracer deserialized = (DeferredTracer) objectInputStream.readObject(); - String trace = deserialized.withTrace(() -> Tracer.getTraceId()); + String trace = deserialized.withTrace(Tracer::getTraceId); assertThat(trace).isEqualTo("defaultTraceId"); } } diff --git a/tracing/src/test/java/com/palantir/tracing/TracersTest.java b/tracing/src/test/java/com/palantir/tracing/TracersTest.java index 6dac27f85..0e65addef 100644 --- a/tracing/src/test/java/com/palantir/tracing/TracersTest.java +++ b/tracing/src/test/java/com/palantir/tracing/TracersTest.java @@ -258,9 +258,7 @@ public void testWrapRunnable_startsNewSpan() throws Exception { public void testWrapCallableWithNewTrace_traceStateInsideCallableIsIsolated() throws Exception { String traceIdBeforeConstruction = Tracer.getTraceId(); - Callable wrappedCallable = Tracers.wrapWithNewTrace(() -> { - return Tracer.getTraceId(); - }); + Callable wrappedCallable = Tracers.wrapWithNewTrace(Tracer::getTraceId); String traceIdFirstCall = wrappedCallable.call(); String traceIdSecondCall = wrappedCallable.call(); @@ -282,9 +280,7 @@ public void testWrapCallableWithNewTrace_traceStateInsideCallableIsIsolated() th @Test public void testWrapCallableWithNewTrace_traceStateInsideCallableHasSpan() throws Exception { - Callable> wrappedCallable = Tracers.wrapWithNewTrace(() -> { - return getCurrentTrace(); - }); + Callable> wrappedCallable = Tracers.wrapWithNewTrace(TracersTest::getCurrentTrace); List spans = wrappedCallable.call(); @@ -298,9 +294,7 @@ public void testWrapCallableWithNewTrace_traceStateInsideCallableHasSpan() throw @Test public void testWrapCallableWithNewTrace_traceStateInsideCallableHasGivenSpan() throws Exception { - Callable> wrappedCallable = Tracers.wrapWithNewTrace("operation", () -> { - return getCurrentTrace(); - }); + Callable> wrappedCallable = Tracers.wrapWithNewTrace("operation", TracersTest::getCurrentTrace); List spans = wrappedCallable.call(); @@ -335,9 +329,7 @@ public void testWrapCallableWithNewTrace_traceStateRestoredToCleared() throws Ex @Test public void testWrapCallableWithNewTrace_canSpecifyObservability() throws Exception { - Callable rawCallable = () -> { - return Tracer.copyTrace().get().isObservable(); - }; + Callable rawCallable = () -> Tracer.copyTrace().get().isObservable(); Callable sampledCallable = Tracers.wrapWithNewTrace("someTraceId", Observability.SAMPLE, rawCallable); Callable unSampledCallable = Tracers.wrapWithNewTrace("someTraceId", Observability.DO_NOT_SAMPLE,