diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml new file mode 100644 index 00000000..475fae8b --- /dev/null +++ b/.github/workflows/pr.yml @@ -0,0 +1,38 @@ +name: PR Build + +on: [pull_request] + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + java: [8, 11, 15] + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Set up JDK ${{ matrix.java }} + uses: actions/setup-java@v1 + with: + java-version: ${{ matrix.java }} + - uses: actions/cache@v2 + id: gradle-cache + with: + path: | + ~/.gradle/caches + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} + - uses: actions/cache@v2 + id: gradle-wrapper-cache + with: + path: | + ~/.gradle/wrapper + key: ${{ runner.os }}-gradlewrapper-${{ hashFiles('gradle/wrapper/*') }} + - name: Build + run: ./gradlew build + validation: + name: "Gradle Validation" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: gradle/wrapper-validation-action@v1 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..fb341f35 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,47 @@ +name: Release + +on: + push: + tags: + - v[0-9]+.[0-9]+.[0-9]+ + - v[0-9]+.[0-9]+.[0-9]+-rc.[0-9]+ + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up JDK + uses: actions/setup-java@v1 + with: + java-version: 8 + - uses: actions/cache@v2 + id: gradle-cache + with: + path: | + ~/.gradle/caches + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} + - uses: actions/cache@v2 + id: gradle-wrapper-cache + with: + path: | + ~/.gradle/wrapper + key: ${{ runner.os }}-gradlewrapper-${{ hashFiles('gradle/wrapper/*') }} + - name: Build candidate + if: contains(github.ref, '-rc.') + run: ./gradlew --info --stacktrace -Prelease.useLastTag=true candidate + env: + NETFLIX_OSS_SIGNING_KEY: ${{ secrets.ORG_SIGNING_KEY }} + NETFLIX_OSS_SIGNING_PASSWORD: ${{ secrets.ORG_SIGNING_PASSWORD }} + NETFLIX_OSS_REPO_USERNAME: ${{ secrets.ORG_NETFLIXOSS_USERNAME }} + NETFLIX_OSS_REPO_PASSWORD: ${{ secrets.ORG_NETFLIXOSS_PASSWORD }} + - name: Build release + if: (!contains(github.ref, '-rc.')) + run: ./gradlew --info -Prelease.useLastTag=true final + env: + NETFLIX_OSS_SONATYPE_USERNAME: ${{ secrets.ORG_SONATYPE_USERNAME }} + NETFLIX_OSS_SONATYPE_PASSWORD: ${{ secrets.ORG_SONATYPE_PASSWORD }} + NETFLIX_OSS_SIGNING_KEY: ${{ secrets.ORG_SIGNING_KEY }} + NETFLIX_OSS_SIGNING_PASSWORD: ${{ secrets.ORG_SIGNING_PASSWORD }} + NETFLIX_OSS_REPO_USERNAME: ${{ secrets.ORG_NETFLIXOSS_USERNAME }} + NETFLIX_OSS_REPO_PASSWORD: ${{ secrets.ORG_NETFLIXOSS_PASSWORD }} diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml new file mode 100644 index 00000000..0e26f5f4 --- /dev/null +++ b/.github/workflows/snapshot.yml @@ -0,0 +1,37 @@ +name: Snapshot + +on: + push: + branches: + - master + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Set up JDK + uses: actions/setup-java@v1 + with: + java-version: 8 + - uses: actions/cache@v2 + id: gradle-cache + with: + path: | + ~/.gradle/caches + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} + - uses: actions/cache@v2 + id: gradle-wrapper-cache + with: + path: | + ~/.gradle/wrapper + key: ${{ runner.os }}-gradlewrapper-${{ hashFiles('gradle/wrapper/*') }} + - name: Build + run: ./gradlew build snapshot + env: + NETFLIX_OSS_SIGNING_KEY: ${{ secrets.ORG_SIGNING_KEY }} + NETFLIX_OSS_SIGNING_PASSWORD: ${{ secrets.ORG_SIGNING_PASSWORD }} + NETFLIX_OSS_REPO_USERNAME: ${{ secrets.ORG_NETFLIXOSS_USERNAME }} + NETFLIX_OSS_REPO_PASSWORD: ${{ secrets.ORG_NETFLIXOSS_PASSWORD }} diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index d759951c..00000000 --- a/.travis.yml +++ /dev/null @@ -1,20 +0,0 @@ -language: java -matrix: - include: - - jdk: openjdk8 - env: GRADLE_PUBLISH=true - - jdk: openjdk11 - env: GRADLE_PUBLISH=false - - jdk: openjdk12 - env: GRADLE_PUBLISH=false -install: ./installViaTravis.sh -script: ./buildViaTravis.sh -env: - global: - - secure: Mtyxi0Jq5XSQVjjBFj1Iqh96RjT0kH4TD/Sh/efdxRjrMXD8si74pzeyKZnJEVKRkvZ68QADJhnngi7S7nVzwhYSlCHRgPpihf23yaPTrZQwvbHENB+s5gjaCerRs04QZn5Wi2Pxy6+C/kT85DgCNEzgW1Bi4w8KtAnCBHjepHc= - - secure: EhJCrVRmKsH5EwjKrne7/Bwy239eTrRJUxnkS9CXwvckrsxmecebE9vgBAU6s5PUxsCMJ/HeOnNJ/MlcS3FoXcCk16w505UtjqOojLy+2KV9ceuuO8oKZ8p1MXkJVNKTn18VmwmsnDKOXNQS4AeqpPZiwBwm4giZnKAgv1fcEYQ= - - secure: j/rX8B4PMI3b9yADsWi268NetrWXjzIaf+Ms/gr0YaIlIx+0XI7Kpg9c3AOh5vvfL2qecwMXqIxWvG6IUmcFlHLD+/9nvEord+MkMLQ44t4bH/Hl5TXsWAM8Of/DWQFWwq/Z/YIHOvSF5HCFH1m3WbPjjM1R4mQSmge9Ay6hw3Y= - - secure: TuRke/gu1FGd2oVHv9vRjGSrVYAhvp7LH9l3OTjoQDKHLGucDR2QJF72sOHJ8YFZxIO99RQUXmUsaWkhHhzoQdCOhQbc8CUcNG66p1soappiJxV7WTiqSdRcinoY7VwgGliuwBv+4zObAZcggGi7OZJAxpqnwXia9K/uqseqApE= -cache: - directories: - - $HOME/.gradle diff --git a/build.gradle b/build.gradle index bfdadb59..be3770cd 100755 --- a/build.gradle +++ b/build.gradle @@ -16,17 +16,17 @@ buildscript { repositories { - jcenter() + mavenCentral() } dependencies { - classpath 'com.netflix.nebula:nebula-dependency-recommender:6.1.1' + classpath 'com.netflix.nebula:nebula-dependency-recommender:9.1.1' + classpath 'com.netflix.nebula:gradle-netflixoss-project-plugin:9.1.0' } } plugins { - id 'nebula.netflixoss' version '7.1.0' - id 'me.champeau.gradle.jmh' version '0.4.7' - id "com.github.spotbugs" version "1.6.9" apply false + id 'me.champeau.gradle.jmh' version '0.5.2' + id "com.github.spotbugs" version "4.6.0" apply false } ext { @@ -35,20 +35,20 @@ ext { allprojects { apply plugin: 'nebula.dependency-recommender' + apply plugin: 'nebula.netflixoss' apply plugin: 'me.champeau.gradle.jmh' } subprojects { - apply plugin: 'nebula.netflixoss' - apply plugin: 'java' - apply plugin: 'checkstyle' + apply plugin: 'java-library' apply plugin: 'com.github.spotbugs' + apply plugin: 'checkstyle' apply plugin: 'pmd' group = "com.netflix.${githubProjectName}" repositories { - jcenter() + mavenCentral() } sourceCompatibility = '1.8' @@ -93,18 +93,21 @@ subprojects { } checkstyle { + toolVersion = '8.39' ignoreFailures = false - toolVersion = '8.14' configFile = rootProject.file('codequality/checkstyle.xml') sourceSets = [sourceSets.main] } spotbugs { - toolVersion = '3.1.10' + toolVersion = '4.2.0' + excludeFilter = rootProject.file('codequality/findbugs-exclude.xml') ignoreFailures = false - sourceSets = [sourceSets.main] + spotbugsMain.enabled = true + spotbugsTest.enabled = false + spotbugsJmh.enabled = false } - tasks.withType(com.github.spotbugs.SpotBugsTask) { + spotbugsMain { reports { xml.enabled = false html.enabled = true @@ -112,7 +115,7 @@ subprojects { } pmd { - toolVersion = '6.9.0' + toolVersion = '6.30.0' ignoreFailures = false ruleSets = [] ruleSetFiles = rootProject.files("codequality/pmd.xml") diff --git a/buildViaTravis.sh b/buildViaTravis.sh deleted file mode 100755 index ea631207..00000000 --- a/buildViaTravis.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -# This script will build the project. - -if [ "$TRAVIS_PULL_REQUEST" != "false" ] || [ "$GRADLE_PUBLISH" == "false" ]; then - echo -e "Build Pull Request #$TRAVIS_PULL_REQUEST => Branch [$TRAVIS_BRANCH]" - ./gradlew build -elif [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$TRAVIS_TAG" == "" ]; then - echo -e 'Build Branch with Snapshot => Branch ['$TRAVIS_BRANCH']' - ./gradlew -Prelease.travisci=true -PbintrayUser="${bintrayUser}" -PbintrayKey="${bintrayKey}" -PsonatypeUsername="${sonatypeUsername}" -PsonatypePassword="${sonatypePassword}" build snapshot -elif [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$TRAVIS_TAG" != "" ]; then - echo -e 'Build Branch for Release => Branch ['$TRAVIS_BRANCH'] Tag ['$TRAVIS_TAG']' - case "$TRAVIS_TAG" in - *-rc\.*) - ./gradlew -Prelease.travisci=true -Prelease.useLastTag=true -PbintrayUser="${bintrayUser}" -PbintrayKey="${bintrayKey}" -PsonatypeUsername="${sonatypeUsername}" -PsonatypePassword="${sonatypePassword}" candidate - ;; - *) - ./gradlew -Prelease.travisci=true -Prelease.useLastTag=true -PbintrayUser="${bintrayUser}" -PbintrayKey="${bintrayKey}" -PsonatypeUsername="${sonatypeUsername}" -PsonatypePassword="${sonatypePassword}" final - ;; - esac -else - echo -e 'WARN: Should not be here => Branch ['$TRAVIS_BRANCH'] Tag ['$TRAVIS_TAG'] Pull Request ['$TRAVIS_PULL_REQUEST']' - ./gradlew build -fi diff --git a/codequality/checkstyle.xml b/codequality/checkstyle.xml index 020ded5d..766d577f 100644 --- a/codequality/checkstyle.xml +++ b/codequality/checkstyle.xml @@ -25,6 +25,16 @@ + + + + + + + + + + @@ -43,25 +53,23 @@ + @@ -82,16 +90,7 @@ - - - - - - - - - diff --git a/codequality/findbugs-exclude.xml b/codequality/findbugs-exclude.xml new file mode 100644 index 00000000..a52f8849 --- /dev/null +++ b/codequality/findbugs-exclude.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/codequality/japi-checker-cli-0.2.1-SNAPSHOT.jar b/codequality/japi-checker-cli-0.2.1-SNAPSHOT.jar deleted file mode 100644 index 2e298ec3..00000000 Binary files a/codequality/japi-checker-cli-0.2.1-SNAPSHOT.jar and /dev/null differ diff --git a/codequality/servo-core-BASELINE.jar b/codequality/servo-core-BASELINE.jar deleted file mode 100644 index 47317f4b..00000000 Binary files a/codequality/servo-core-BASELINE.jar and /dev/null differ diff --git a/dependencies.properties b/dependencies.properties index 788c2b55..39e8dffa 100644 --- a/dependencies.properties +++ b/dependencies.properties @@ -1,23 +1,23 @@ # Auto generated by insight-recommendations build -com.amazonaws:aws-java-sdk-autoscaling = 1.11.521 -com.amazonaws:aws-java-sdk-cloudwatch = 1.11.521 -com.amazonaws:aws-java-sdk-core = 1.11.521 -com.fasterxml.jackson.core:jackson-annotations = 2.9.8 -com.fasterxml.jackson.core:jackson-core = 2.9.8 -com.fasterxml.jackson.core:jackson-databind = 2.9.8 -com.fasterxml.jackson.dataformat:jackson-dataformat-smile = 2.9.8 +com.amazonaws:aws-java-sdk-autoscaling = 1.11.965 +com.amazonaws:aws-java-sdk-cloudwatch = 1.11.965 +com.amazonaws:aws-java-sdk-core = 1.11.965 +com.fasterxml.jackson.core:jackson-annotations = 2.12.1 +com.fasterxml.jackson.core:jackson-core = 2.12.1 +com.fasterxml.jackson.core:jackson-databind = 2.12.1 +com.fasterxml.jackson.dataformat:jackson-dataformat-smile = 2.12.1 com.google.guava:guava = 19.0 -com.netflix.archaius:archaius2-api = 2.3.14 -com.netflix.archaius:archaius2-core = 2.3.14 -com.netflix.awsobjectmapper:awsobjectmapper = 1.11.521 -com.netflix.eureka:eureka-client = 1.9.9 -com.netflix.frigga:frigga = 0.18.0 +com.netflix.archaius:archaius2-api = 2.3.16 +com.netflix.archaius:archaius2-core = 2.3.16 +com.netflix.awsobjectmapper:awsobjectmapper = 1.11.965 +com.netflix.eureka:eureka-client = 1.10.12 +com.netflix.frigga:frigga = 0.24.0 com.netflix.iep-shadow:iepshadow-iep-module-rxnetty = 0.4.18.29 com.netflix.iep-shadow:iepshadow-iep-rxhttp = 0.4.18.29 com.netflix.iep-shadow:iepshadow-rxnetty = 0.4.20.29 com.netflix.iep-shadow:iepshadow-rxnetty-contexts = 0.4.20.29 com.netflix.iep-shadow:iepshadow-rxnetty-spectator = 0.4.20.29 -com.netflix.spectator:spectator-api = 0.88.0 +com.netflix.spectator:spectator-api = 0.124.0 io.netty:netty-buffer = 4.1.8.Final io.netty:netty-codec = 4.1.8.Final io.netty:netty-codec-http = 4.1.8.Final @@ -30,7 +30,7 @@ io.reactivex:rxjava = 1.3.8 io.reactivex:rxnetty = 0.4.20 io.reactivex:rxnetty-contexts = 0.4.20 io.reactivex:rxnetty-spectator = 0.4.20 -org.slf4j:slf4j-api = 1.7.26 -org.slf4j:slf4j-log4j12 = 1.7.26 -org.slf4j:slf4j-nop = 1.7.26 -org.slf4j:slf4j-simple = 1.7.26 +org.slf4j:slf4j-api = 1.7.30 +org.slf4j:slf4j-log4j12 = 1.7.30 +org.slf4j:slf4j-nop = 1.7.30 +org.slf4j:slf4j-simple = 1.7.30 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 046cb948..8178ab14 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.3.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-all.zip diff --git a/installViaTravis.sh b/installViaTravis.sh deleted file mode 100755 index 68e45a05..00000000 --- a/installViaTravis.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -# This script will build the project. - -if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then - echo -e "Assemble Pull Request #$TRAVIS_PULL_REQUEST => Branch [$TRAVIS_BRANCH]" - ./gradlew assemble -elif [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$TRAVIS_TAG" == "" ]; then - echo -e 'Assemble Branch with Snapshot => Branch ['$TRAVIS_BRANCH']' - ./gradlew -Prelease.travisci=true assemble -elif [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$TRAVIS_TAG" != "" ]; then - echo -e 'Assemble Branch for Release => Branch ['$TRAVIS_BRANCH'] Tag ['$TRAVIS_TAG']' - ./gradlew -Prelease.travisci=true -Prelease.useLastTag=true assemble -else - echo -e 'WARN: Should not be here => Branch ['$TRAVIS_BRANCH'] Tag ['$TRAVIS_TAG'] Pull Request ['$TRAVIS_PULL_REQUEST']' - ./gradlew assemble -fi diff --git a/servo-atlas/src/main/java/com/netflix/servo/publish/atlas/AtlasMetricObserver.java b/servo-atlas/src/main/java/com/netflix/servo/publish/atlas/AtlasMetricObserver.java index 9cc0bf1e..74698f97 100644 --- a/servo-atlas/src/main/java/com/netflix/servo/publish/atlas/AtlasMetricObserver.java +++ b/servo-atlas/src/main/java/com/netflix/servo/publish/atlas/AtlasMetricObserver.java @@ -336,10 +336,10 @@ private String getPayloadPrefix() { } protected void dumpPayload(File out, JsonPayload payload) throws IOException { - JsonGenerator generator = jsonFactory.createGenerator(out, JsonEncoding.UTF8); - generator.setPrettyPrinter(new AtlasPrettyPrinter()); - payload.toJson(generator); - + try (JsonGenerator generator = jsonFactory.createGenerator(out, JsonEncoding.UTF8)) { + generator.setPrettyPrinter(new AtlasPrettyPrinter()); + payload.toJson(generator); + } } protected Observable getSenderObservable(TagList tags, Metric[] batch) { diff --git a/servo-atlas/src/main/java/com/netflix/servo/publish/atlas/HttpHelper.java b/servo-atlas/src/main/java/com/netflix/servo/publish/atlas/HttpHelper.java index 9229852d..904d9bf9 100644 --- a/servo-atlas/src/main/java/com/netflix/servo/publish/atlas/HttpHelper.java +++ b/servo-atlas/src/main/java/com/netflix/servo/publish/atlas/HttpHelper.java @@ -114,9 +114,9 @@ public RxHttp getRxHttp() { private byte[] toByteArray(JsonFactory factory, JsonPayload payload) { try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); - JsonGenerator gen = factory.createGenerator(baos, JsonEncoding.UTF8); - payload.toJson(gen); - gen.close(); + try (JsonGenerator gen = factory.createGenerator(baos, JsonEncoding.UTF8)) { + payload.toJson(gen); + } baos.close(); return baos.toByteArray(); } catch (IOException e) { diff --git a/servo-aws/src/main/java/com/netflix/servo/publish/cloudwatch/CloudWatchMetricObserver.java b/servo-aws/src/main/java/com/netflix/servo/publish/cloudwatch/CloudWatchMetricObserver.java index a686eef1..74c7533a 100644 --- a/servo-aws/src/main/java/com/netflix/servo/publish/cloudwatch/CloudWatchMetricObserver.java +++ b/servo-aws/src/main/java/com/netflix/servo/publish/cloudwatch/CloudWatchMetricObserver.java @@ -71,7 +71,7 @@ public class CloudWatchMetricObserver extends BaseMetricObserver { /** * Maximum value that can be represented in cloudwatch. */ - static final double MAX_VALUE = java.lang.Math.pow(2.0, MAX_EXPONENT); + static final double MAX_VALUE = Math.pow(2.0, MAX_EXPONENT); /** * Number of cloudwatch metrics reported. diff --git a/servo-core/build.gradle b/servo-core/build.gradle index 9722a369..c58879a5 100644 --- a/servo-core/build.gradle +++ b/servo-core/build.gradle @@ -1,18 +1,3 @@ -task(checkCompatibility, dependsOn: 'jar', type: JavaExec) { - doFirst { - main = 'com.googlecode.japi.checker.cli.Main' - classpath = files("$projectDir/../codequality/japi-checker-cli-0.2.1-SNAPSHOT.jar") - args = [ - "$projectDir/../codequality/servo-core-BASELINE.jar", - jar.archivePath.path - ] - } -} - -build { - it.dependsOn checkCompatibility -} - pmd { ignoreFailures = true } diff --git a/servo-example/build.gradle b/servo-example/build.gradle index bcdf7411..85e4ec13 100644 --- a/servo-example/build.gradle +++ b/servo-example/build.gradle @@ -28,6 +28,10 @@ checkstyle { sourceSets = [] } +pmd { + ignoreFailures = true +} + jar { manifest { attributes( diff --git a/servo-graphite/build.gradle b/servo-graphite/build.gradle index 51427ae1..895241b4 100644 --- a/servo-graphite/build.gradle +++ b/servo-graphite/build.gradle @@ -2,6 +2,10 @@ dependencies { compile project(':servo-core') } +pmd { + ignoreFailures = true +} + jar { manifest { attributes( diff --git a/servo-tomcat/build.gradle b/servo-tomcat/build.gradle index effb2fd7..04f8cab1 100644 --- a/servo-tomcat/build.gradle +++ b/servo-tomcat/build.gradle @@ -2,6 +2,10 @@ dependencies { compile project(':servo-core') } +pmd { + ignoreFailures = true +} + jar { manifest { attributes(