This is an automated email from the ASF dual-hosted git repository. adriancole pushed a commit to branch back-to-openzipkin in repository https://gitbox.apache.org/repos/asf/incubator-zipkin-layout-factory.git
commit 59f08f1cad825182cb85d7ea863362bcb6d64a5c Author: Adrian Cole <[email protected]> AuthorDate: Thu Jun 13 12:11:36 2019 +0800 Restores OpenZipkin publishing configuration This reverts back to OpenZipkin publishing configuration. See https://github.com/apache/incubator-zipkin/issues/2629 --- .mvn/wrapper/maven-wrapper.properties | 2 +- .settings.xml | 43 ++++ .travis.yml | 29 ++- DISCLAIMER | 5 - Jenkinsfile | 91 -------- NOTICE | 5 - RELEASE.adoc | 51 +++++ mvnw | 4 +- mvnw.cmd | 4 +- pom.xml | 238 ++++++++------------- src/etc/header.txt | 21 +- src/main/assemblies/source-release.xml | 90 -------- .../java/zipkin/layout/ZipkinLayoutFactory.java | 21 +- .../zipkin/layout/ZipkinLayoutFactoryTest.java | 21 +- travis/publish.sh | 138 ++++++++++++ 15 files changed, 383 insertions(+), 380 deletions(-) diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties index ec07118..fa87ad7 100644 --- a/.mvn/wrapper/maven-wrapper.properties +++ b/.mvn/wrapper/maven-wrapper.properties @@ -1,2 +1,2 @@ distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.1/apache-maven-3.6.1-bin.zip -wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.4/maven-wrapper-0.5.4.jar +wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar diff --git a/.settings.xml b/.settings.xml new file mode 100644 index 0000000..022e7dd --- /dev/null +++ b/.settings.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + Copyright 2018-2019 The OpenZipkin Authors + + Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + in compliance with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software distributed under the License + is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing permissions and limitations under + the License. + +--> +<settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://maven.apache.org/SETTINGS/1.0.0" + xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 + http://maven.apache.org/xsd/settings-1.0.0.xsd"> + <servers> + <server> + <id>sonatype</id> + <username>${env.SONATYPE_USER}</username> + <password>${env.SONATYPE_PASSWORD}</password> + </server> + <server> + <id>bintray</id> + <username>${env.BINTRAY_USER}</username> + <password>${env.BINTRAY_KEY}</password> + </server> + <server> + <id>jfrog-snapshots</id> + <username>${env.BINTRAY_USER}</username> + <password>${env.BINTRAY_KEY}</password> + </server> + <server> + <id>github.com</id> + <username>zipkinci</username> + <password>${env.GH_TOKEN}</password> + </server> + </servers> +</settings> diff --git a/.travis.yml b/.travis.yml index 59d6d38..77397f6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,6 +8,33 @@ language: java jdk: oraclejdk8 +before_install: + # allocate commits to CI, not the owner of the deploy key + - git config user.name "zipkinci" + - git config user.email "[email protected]" + # setup https authentication credentials, used by ./mvnw release:prepare + - git config credential.helper "store --file=.git/credentials" + - echo "https://$GH_TOKEN:@github.com" > .git/credentials + # Override default travis to use the maven wrapper install: ./mvnw install -DskipTests=true -Dmaven.javadoc.skip=true -B -V -script: ./mvnw clean test -B +script: ./travis/publish.sh + +# Don't build release tags. This avoids publish conflicts because the version commit exists both on master and the release tag. +# See https://github.com/travis-ci/travis-ci/issues/1532 +branches: + except: + - /^[0-9]/ + +env: + global: + # Ex. travis encrypt BINTRAY_USER=your_github_account + - secure: "fI448ieGViV3SoFl+WlR5PtsBpqQnBdz394nXVKit+n6L09O7cUn07E7fVPf5wQpICEYziAcvu966I1ajUHhT6gf4h1SvjiRWE7GmLEc55ctBdofY5nbhMXtDQrD+pMu0Td3s/+vys3EduzynxugSzn0gSzLR7LWLySpgvhp+Pa7IAd6Z24K+Pxcrs88d/WSpGCcTJLmdXiA+UevRXX/SW4rM69y9uY1W2IWBbzN3Ev+5ylpJ5Lxp+uddmCThlAL7OB6SUHBWt6KmYA6xv5zq2DYsdpFVvwFRq3FZe4Nwh5vCidLz/Gdxk2c4z5PrJTHEoVSc3RSP1oI1E8ixaZm9RJhvmzgS0fdrSr4lm3oxvxepLnMW+OCXsFjCqc3F8DNBjGzWf8aD2EUj8fZSyr4Ffre1oRu6Y6PZErfyCDJ4qh1uxjlPdTE2s8K+yiTHYQ/xtP8sAz+7pZtXO5QgQljwpJshG4JY [...] + # Ex. travis encrypt BINTRAY_KEY=xxx-https://bintray.com/profile/edit-xxx --add + - secure: "aDtB8cBiLzXIUNXSzaMhd9y01KaVEwP9pBddk13d7ZEOvLibEt8sals/IOrrxrhPmfwrnO7EqJUOdz8rk6A4JFBzsp0iWVBPkvDOxy9zs4hiAKR3DZZl42D7ylBwMXSRW2VRYs/XlL+4qr25G9al5ClfP60pZmCJ6q9BSn5CdwNnBkQGXaS/W97pMZSxHt4lPK1kkNKclc81mWq0kZZ5VuAaH/LX2zAn90tu/+aEV5/MoivMjnyT4eZLl0uNOsjhLnK7YJqgj0kRwAqTBNqRW5hfHnWrD2mnuaPN4SE+4tfNESsCzAScSHWECPNHCIMEx2cecKQ9HTbzndnH6KJhrmkwiQ9CPOFhpkUXhCanmFLuagS2wHjMtAb5YtZPzgujArsyApoBWaHqVNHnDpw1GoH8sgImeCNq19Yho7QsRiDe1MPiOfTcUpFth+MiZOy9AG1MXntyymWJqhvMI4N032PhuwN9Z [...] + # Ex. travis encrypt GH_TOKEN=XXX-https://github.com/settings/tokens-XXX --add + - secure: "fDELe6BbxL6h24TMRjvvpQlymEnyMi5XI660mOxNV5OZ7PEGEE12o/dMx83GRupGIpAqAHFm0iSAuzofFDOXdsznedxT018KPYdkaFPGVDgfOYDaVNWeEoSIS6DbjADrTU7KS2e/aFQGpV95awvh5BTP2XxepoZIWw2ECXMsnInqg1u+IGoB5ydPZTPBmlpEhwgUFW/IGZNLodKbc8xSylfiDrDwH4NlqVJzWM0JjY7Xxt46b2NFqSbtGYj21gPaDOxmLJKIGMegeB/i1C63gONuAFBF/pgMTGISLH0O1AH48OImZa2pKFXstrAVofL1rstJjq20xNhnbzRgavc1Zobj+EhLFPPJSrG7FyiGWRVSIzkIYiMT2CXyAg5zNdV3HROd12AQhZ4bZ+UNF3Op0s+jpLfobyTm8meOq/HhF7AZwHSJfBzTA0cp5jD3CVMQjogKK9fYqiy834LsgrY81dVHBUb22 [...] + # Ex. travis encrypt SONATYPE_USER=your_sonatype_account + - secure: "PtaGo8uoPEj9xWOnrQ4eLwUtZPS2/02i8gOgOH7aX45CzT/wwv1720bXekupApbe2TF81euMe6GzIzXgZIFKM64Vy55/caKnovKoW5Vys8vHZUzI/Bgo2721vJnD1p8vssFQ83nXoymMB4m+0p726ZQfYTDSxsrnN3vRaLXII9dEm+oQ2Uag1FbwgJ04sQnR8Y8xFuvaEOyEImFG9HTBjQub/WI7R8hY/+hRNKq47DeJ/n7D01NxZ6R+WLQOVQdzeCjtVa4bVVYiiTYURhzGRkSp2mEIBrEfYoatXoEagJu4abXufvSJG0e12/NMTFmI8F2MqKAgso7+ocXtYbTwdKxFsh3T8ydSE1VujjkvEdHHTY7iv2Cc31chwluTVRGCxBXClXeVKNskHkW0Zyru4qxP7QUrIEPtxrlSlLx7Q+yZmGBHGZHXh0wCEY/qQFdWzbVe8TmWwjoPwMPvmsK5Y9re1WX6Gm2 [...] + # Ex. travis encrypt SONATYPE_PASSWORD=your_sonatype_password + - secure: "hV6ZG4sZpPy6fgQR8r/jHaIRlp9PWGI4hBmIPjlVbFuH+QawRtrZtsiWai7U/20WSan/g92gdmPJzgnXr2PnCG/d97gK/gNL6qR+eGr6iJJmhCx4NnKE5mGevzAK0FDT6gnyOafqKph8K6SemAjpgc3YlBz3yOOc7gTzcdJlxLzG7xzBfU2wHmUxPt/I+6ZglYKtNV2NG7qSURMbjDXcexijzIC6TutZD7xKKBAN2JFv0BMkxsBXd1tb7stDyz5VfDl2Y0B/CLW7zLPY0i9TjbZ00cPdUKNFm5uTin1L4qWi77+DFk/+0pS5L1SQJsH+d5RPi+YmVRLhZInqWrDCu68Q5b63oxBWwGLgqh5InNUG/32yZrPLMp1C68CjTEjcEjEDAcdON2+A/oYSK+8gvFZvaOtGKH8hGnKWN6ZaXBBvPR7BptuKJ+pqa5OXr6ViwiC0IxAEIcpCGfXKrIpeiJfJAcJ8fyw [...] diff --git a/DISCLAIMER b/DISCLAIMER deleted file mode 100644 index 542e797..0000000 --- a/DISCLAIMER +++ /dev/null @@ -1,5 +0,0 @@ -Apache Zipkin (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator PMC. -Incubation is required of all newly accepted projects until a further review indicates -that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. -While incubation status is not necessarily a reflection of the completeness or stability of the code, -it does indicate that the project has yet to be fully endorsed by the ASF. diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index d7e2215..0000000 --- a/Jenkinsfile +++ /dev/null @@ -1,91 +0,0 @@ - -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -pipeline { - agent { - label 'ubuntu' - } - - tools { - jdk 'JDK 1.8 (latest)' - } - - options { - buildDiscarder(logRotator( - numToKeepStr: '30', - )) - timestamps() - skipStagesAfterUnstable() - timeout time: 30, unit: 'MINUTES' - } - - stages { - stage('SCM Checkout') { - steps { - deleteDir() - checkout scm - } - } - - stage('Check environment') { - steps { - sh 'env' - sh 'pwd' - sh 'ls' - sh 'git status' - } - } - - stage('Run tests') { - steps { - // use install, as opposed to verify, to ensure invoker tests use latest code - sh './mvnw clean install --batch-mode -nsu' - } - } - - stage('Publish snapshot') { - when { - branch 'master' - } - steps { - sh './mvnw deploy -Papache-release -Dgpg.skip=true -DskipTests --batch-mode -nsu' - } - } - } - - post { - always { - junit '**/target/surefire-reports/*.xml' - deleteDir() - } - - changed { - script { - if (env.BRANCH_NAME == 'master') { - emailext( - subject: "[${currentBuild.projectName}] master is ${currentBuild.currentResult} (#${currentBuild.number})", - to: '[email protected]', - replyTo: '[email protected]', - body: "See <${currentBuild.absoluteUrl}>" - ) - } - } - - } - } -} diff --git a/NOTICE b/NOTICE deleted file mode 100644 index 5aa79ee..0000000 --- a/NOTICE +++ /dev/null @@ -1,5 +0,0 @@ -Spring Boot Layout Factory for Apache Zipkin (incubating) -Copyright 2019 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). diff --git a/RELEASE.adoc b/RELEASE.adoc new file mode 100644 index 0000000..95b332a --- /dev/null +++ b/RELEASE.adoc @@ -0,0 +1,51 @@ +== Zipkin Custom Layout Release Process +This repo uses semantic versions. Please keep this in mind when choosing version numbers. + +Alert others you are releasing:: + +There should be no commits made to master while the release is in progress (about 10 minutes). Before you start a release, alert others on https://gitter.im/openzipkin/zipkin[gitter] so that they don't accidentally merge anything. If they do, and the build fails because of that, you'll have to recreate the release tag described below. + +Push a git tag:: + +The tag should be of the format `release-N.M.L`, for example `release-3.7.1`. + +Wait for Travis CI:: + + This part is controlled by link:travis/publish.sh[`travis/publish.sh`]. It creates a bunch of new commits, bumps + the version, publishes artifacts, syncs to Maven Central. + +=== Credentials + +Credentials of various kind are needed for the release process to work. If you notice something + failing due to unauthorized, re-encrypt them using instructions at the bottom of the `.travis.yml` + +Ex You'll see comments like this: + + ```yaml + env: + global: + # Ex. travis encrypt BINTRAY_USER=your_github_account + - secure: "VeTO... + ``` + +To re-encrypt, you literally run the commands with relevant values and replace the "secure" key with the output: + + ```bash + $ travis encrypt BINTRAY_USER=adrianmole + Please add the following to your .travis.yml file: + + secure: "mQnECL+dXc5l9wCYl/wUz+AaYFGt/1G31NAZcTLf2RbhKo8mUenc4hZNjHCEv+4ZvfYLd/NoTNMhTCxmtBMz1q4CahPKLWCZLoRD1ExeXwRymJPIhxZUPzx9yHPHc5dmgrSYOCJLJKJmHiOl9/bJi123456=" + ``` + +=== Troubleshooting invalid credentials + +If you receive a '401 unauthorized' failure from jCenter or Bintray, it is likely `BINTRAY_USER` or `BINTRAY_KEY` entries are invalid, or possibly the user associated with them does not have rights to upload. + +The least destructive test is to try to publish a snapshot manually. By passing the values Travis would use, you can kick off a snapshot from your laptop. This is a good way to validate that your unencrypted credentials are authorized. + +Here's an example of a snapshot deploy with specified credentials. + + ```bash + $ BINTRAY_USER=adrianmole BINTRAY_KEY=ed6f20bde9123bbb2312b221 TRAVIS_PULL_REQUEST=false TRAVIS_TAG= TRAVIS_BRANCH=master travis/publish.sh + ``` + diff --git a/mvnw b/mvnw index 35ff643..d2f0ea3 100755 --- a/mvnw +++ b/mvnw @@ -212,9 +212,9 @@ else echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." fi if [ -n "$MVNW_REPOURL" ]; then - jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.4/maven-wrapper-0.5.4.jar" + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar" else - jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.4/maven-wrapper-0.5.4.jar" + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar" fi while IFS="=" read key value; do case "$key" in (wrapperUrl) jarUrl="$value"; break ;; diff --git a/mvnw.cmd b/mvnw.cmd index dae46d4..b26ab24 100644 --- a/mvnw.cmd +++ b/mvnw.cmd @@ -120,7 +120,7 @@ SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain -set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.4/maven-wrapper-0.5.4.jar" +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar" FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B @@ -134,7 +134,7 @@ if exist %WRAPPER_JAR% ( ) ) else ( if not "%MVNW_REPOURL%" == "" ( - SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.4/maven-wrapper-0.5.4.jar" + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar" ) if "%MVNW_VERBOSE%" == "true" ( echo Couldn't find %WRAPPER_JAR%, downloading it ... diff --git a/pom.xml b/pom.xml index 9b260e3..ad4f009 100644 --- a/pom.xml +++ b/pom.xml @@ -1,36 +1,32 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at + Copyright 2018-2019 The OpenZipkin Authors - http://www.apache.org/licenses/LICENSE-2.0 + Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + in compliance with the License. You may obtain a copy of the License at - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software distributed under the License + is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing permissions and limitations under + the License. --> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.apache</groupId> - <artifactId>apache</artifactId> - <version>21</version> - </parent> - - <groupId>org.apache.zipkin.layout</groupId> + <groupId>io.zipkin.layout</groupId> <artifactId>zipkin-layout-factory</artifactId> <version>0.0.6-SNAPSHOT</version> <packaging>jar</packaging> + <name>zipkin-layout-factory</name> + <description>Spring Boot Layout Factory for Zipkin</description> + <url>https://github.com/openzipkin/zipkin-layout-factory</url> + <inceptionYear>2018</inceptionYear> + <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> @@ -41,23 +37,19 @@ <maven.compiler.target>1.8</maven.compiler.target> <maven-release-plugin.version>2.5.3</maven-release-plugin.version> - <maven-compiler-plugin.version>3.8.0</maven-compiler-plugin.version> + <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version> <maven-install-plugin.version>3.0.0-M1</maven-install-plugin.version> <maven-deploy-plugin.version>3.0.0-M1</maven-deploy-plugin.version> - <maven-source-plugin.version>3.0.1</maven-source-plugin.version> + <maven-source-plugin.version>3.1.0</maven-source-plugin.version> + <maven-javadoc-plugin.version>3.1.0</maven-javadoc-plugin.version> <maven-jar-plugin.version>3.1.0</maven-jar-plugin.version> <license-maven-plugin.version>3.0</license-maven-plugin.version> <maven-failsafe-plugin.version>3.0.0-M3</maven-failsafe-plugin.version> </properties> - <name>zipkin-layout-factory</name> - <description>Spring Boot Layout Factory for Apache Zipkin (incubating)</description> - <url>https://github.com/apache/incubator-zipkin-layout-factory</url> - <inceptionYear>2018</inceptionYear> - <organization> - <name>The Apache Software Foundation</name> - <url>http://www.apache.org/</url> + <name>OpenZipkin</name> + <url>http://zipkin.io/</url> </organization> <licenses> @@ -68,13 +60,6 @@ </license> </licenses> - <scm> - <url>https://github.com/apache/incubator-zipkin-layout-factory</url> - <connection>scm:git:https://github.com/apache/incubator-zipkin-layout-factory.git</connection> - <developerConnection>scm:git:https://github.com/apache/incubator-zipkin-layout-factory.git</developerConnection> - <tag>HEAD</tag> - </scm> - <!-- Developer section is needed for Maven Central, but doesn't need to include each person --> <developers> <developer> @@ -84,42 +69,34 @@ </developer> </developers> - <mailingLists> - <mailingList> - <name>Zipkin Developer List</name> - <post>[email protected]</post> - <subscribe>[email protected]</subscribe> - <unsubscribe>[email protected]</unsubscribe> - </mailingList> - <mailingList> - <name>Zipkin Commits</name> - <post>[email protected]</post> - <subscribe>[email protected]</subscribe> - <unsubscribe>[email protected]</unsubscribe> - </mailingList> - </mailingLists> + <scm> + <url>https://github.com/openzipkin/zipkin-layout-factory</url> + <connection>scm:git:https://github.com/openzipkin/zipkin-layout-factory.git</connection> + <developerConnection>scm:git:https://github.com/openzipkin/zipkin-layout-factory.git</developerConnection> + <tag>HEAD</tag> + </scm> <distributionManagement> <repository> - <id>apache.releases.https</id> - <url>https://repository.apache.org/service/local/staging/deploy/maven2</url> + <id>bintray</id> + <url>https://api.bintray.com/openzipkin/maven/zipkin-layout-factory/;publish=1</url> </repository> <snapshotRepository> - <id>apache.snapshots.https</id> - <url>https://repository.apache.org/content/repositories/snapshots/</url> + <id>jfrog-snapshots</id> + <url>http://oss.jfrog.org/artifactory/oss-snapshot-local</url> </snapshotRepository> </distributionManagement> <issueManagement> <system>Github</system> - <url>https://github.com/apache/incubator-zipkin-layout-factory/issues</url> + <url>https://github.com/openzipkin/zipkin-layout-factory/issues</url> </issueManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-loader-tools</artifactId> - <version>2.1.4.RELEASE</version> + <version>2.1.5.RELEASE</version> </dependency> <dependency> @@ -143,13 +120,18 @@ <plugin> <groupId>io.takari</groupId> <artifactId>maven</artifactId> - <version>0.7.5</version> + <version>0.7.6</version> <configuration> <maven>3.6.1</maven> </configuration> </plugin> <plugin> + <artifactId>maven-compiler-plugin</artifactId> + <version>${maven-compiler-plugin.version}</version> + </plugin> + + <plugin> <artifactId>maven-install-plugin</artifactId> <version>${maven-install-plugin.version}</version> </plugin> @@ -161,41 +143,34 @@ </plugin> <plugin> - <artifactId>maven-javadoc-plugin</artifactId> - <!-- inherit version from org.apache:parent --> + <artifactId>maven-jar-plugin</artifactId> + <version>${maven-jar-plugin.version}</version> + </plugin> + + <plugin> + <artifactId>maven-release-plugin</artifactId> + <version>${maven-release-plugin.version}</version> <configuration> - <failOnError>false</failOnError> - <!-- hush pedantic warnings: we don't put param and return on everything! --> - <doclint>none</doclint> + <useReleaseProfile>false</useReleaseProfile> + <releaseProfiles>release</releaseProfiles> + <!-- to match zipkin-scala (openzipkin/zipkin) --> + <tagNameFormat>@{project.version}</tagNameFormat> </configuration> </plugin> + <plugin> + <groupId>io.zipkin.centralsync-maven-plugin</groupId> + <artifactId>centralsync-maven-plugin</artifactId> + <version>0.1.0</version> + <configuration> + <packageName>zipkin-layout-factory</packageName> + </configuration> + </plugin> </plugins> </pluginManagement> <plugins> <plugin> - <artifactId>maven-jar-plugin</artifactId> - <version>${maven-jar-plugin.version}</version> - </plugin> - - <plugin> - <artifactId>maven-surefire-plugin</artifactId> - <version>${maven-failsafe-plugin.version}</version> - </plugin> - - <plugin> - <artifactId>maven-install-plugin</artifactId> - <version>3.0.0-M1</version> - </plugin> - - <!-- Uploads occur as a last step (which also adds checksums) --> - <plugin> - <artifactId>maven-deploy-plugin</artifactId> - <version>3.0.0-M1</version> - </plugin> - - <plugin> <groupId>com.mycila</groupId> <artifactId>license-maven-plugin</artifactId> <version>${license-maven-plugin.version}</version> @@ -214,16 +189,19 @@ <exclude>etc/header.txt</exclude> <exclude>**/.idea/**</exclude> <exclude>LICENSE</exclude> - <exclude>DISCLAIMER</exclude> - <exclude>DEPENDENCIES</exclude> - <exclude>NOTICE</exclude> - <exclude>Jenkinsfile</exclude> <exclude>**/*.md</exclude> <exclude>**/*.adoc</exclude> <exclude>**/spring.factories</exclude> </excludes> <strictCheck>true</strictCheck> </configuration> + <dependencies> + <dependency> + <groupId>com.mycila</groupId> + <artifactId>license-maven-plugin-git</artifactId> + <version>${license-maven-plugin.version}</version> + </dependency> + </dependencies> <executions> <execution> <goals> @@ -253,77 +231,43 @@ </execution> </executions> </plugin> - - <plugin> - <groupId>org.apache.rat</groupId> - <artifactId>apache-rat-plugin</artifactId> - <version>0.13</version> - <configuration> - <excludes> - <exclude>**/target/**</exclude> - - <!-- IDE files --> - <exclude>**/*.iml</exclude> - <exclude>**/.idea/**</exclude> - <exclude>**/*.classpath</exclude> - <exclude>**/.project</exclude> - <exclude>**/.settings/**</exclude> - <exclude>**/dependency-reduced-pom.xml</exclude> - - <!-- spring files --> - <exclude>**/spring.factories</exclude> - - <!-- git files --> - <exclude>**/.gitignore</exclude> - <exclude>**/.gitmodules</exclude> - <exclude>**/.git/**</exclude> - - <!-- CI files --> - <exclude>**/.travis.yml</exclude> - - <!-- GitHub files --> - <exclude>**/.github/**</exclude> - - <!-- document files --> - <exclude>**/*.md</exclude> - <exclude>**/*.adoc</exclude> - - <!-- Maven Wrapper generated files --> - <exclude>.mvn/wrapper/maven-wrapper.properties</exclude> - </excludes> - </configuration> - <executions> - <execution> - <phase>verify</phase> - <goals> - <goal>check</goal> - </goals> - </execution> - </executions> - </plugin> </plugins> - </build> <profiles> <profile> - <id>apache-release</id> + <id>release</id> <build> <plugins> + <!-- Creates source jar --> <plugin> - <artifactId>maven-assembly-plugin</artifactId> + <artifactId>maven-source-plugin</artifactId> + <version>${maven-source-plugin.version}</version> + <executions> + <execution> + <id>attach-sources</id> + <goals> + <goal>jar</goal> + </goals> + </execution> + </executions> + </plugin> + <!-- Creates javadoc jar --> + <plugin> + <artifactId>maven-javadoc-plugin</artifactId> + <version>${maven-javadoc-plugin.version}</version> + <configuration> + <failOnError>false</failOnError> + <!-- hush pedantic warnings: we don't put param and return on everything! --> + <doclint>none</doclint> + </configuration> <executions> <execution> - <id>source-release-assembly</id> - <configuration> - <!-- make the source release zip includes the word incubating --> - <finalName>apache-zipkin-layout-factory-incubating-${project.version}</finalName> - <descriptors> - <descriptor>src/main/assemblies/source-release.xml</descriptor> - </descriptors> - <!-- don't inherit the source-release as we are overriding it --> - <descriptorRefs combine.self="override" /> - </configuration> + <id>attach-javadocs</id> + <goals> + <goal>jar</goal> + </goals> + <phase>package</phase> </execution> </executions> </plugin> diff --git a/src/etc/header.txt b/src/etc/header.txt index 1745cfe..6dba3bd 100644 --- a/src/etc/header.txt +++ b/src/etc/header.txt @@ -1,14 +1,11 @@ -Licensed to the Apache Software Foundation (ASF) under one or more -contributor license agreements. See the NOTICE file distributed with -this work for additional information regarding copyright ownership. -The ASF licenses this file to You under the Apache License, Version 2.0 -(the "License"); you may not use this file except in compliance with -the License. You may obtain a copy of the License at +Copyright ${license.git.copyrightYears} The OpenZipkin Authors - http://www.apache.org/licenses/LICENSE-2.0 +Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except +in compliance with the License. You may obtain a copy of the License at -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software distributed under the License +is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express +or implied. See the License for the specific language governing permissions and limitations under +the License. diff --git a/src/main/assemblies/source-release.xml b/src/main/assemblies/source-release.xml deleted file mode 100644 index 45506ec..0000000 --- a/src/main/assemblies/source-release.xml +++ /dev/null @@ -1,90 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?> -<!-- - - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - ---> -<assembly> - <id>source-release</id> - <!-- the only thing being done differently here is the base directory --> - <baseDirectory>zipkin-layout-factory-${version}</baseDirectory> - <formats> - <format>zip</format> - </formats> - - <!-- Inlined to exclude all maven wrapper artifacts. This allows us to avoid NOTICE citations --> - <fileSets> - <!-- main project directory structure --> - <fileSet> - <directory>.</directory> - <outputDirectory></outputDirectory> - <useDefaultExcludes>true</useDefaultExcludes> - <excludes> - <!-- PATCH: Travis --> - <exclude>.travis.yml</exclude> - - <!-- PATCH: Jenkinsfile --> - <exclude>Jenkinsfile</exclude> - - <!-- PATCH: Maven wrapper --> - <exclude>.mvn/**</exclude> - <exclude>mvnw</exclude> - <exclude>mvnw.cmd</exclude> - - <!-- build output --> - <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/).*${project.build.directory}.*]</exclude> - - <!-- NOTE: Most of the following excludes should not be required - if the standard release process is followed. This is because the - release plugin checks out project sources into a location like - target/checkout, then runs the build from there. The result is - a source-release archive that comes from a pretty clean directory - structure. - - HOWEVER, if the release plugin is configured to run extra goals - or generate a project website, it's definitely possible that some - of these files will be present. So, it's safer to exclude them. - --> - - <!-- IDEs --> - <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?maven-eclipse\.xml]</exclude> - <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.project]</exclude> - <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.classpath]</exclude> - <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?[^/]*\.iws]</exclude> - <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.idea(/.*)?]</exclude> - <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?out(/.*)?]</exclude> - <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?[^/]*\.ipr]</exclude> - <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?[^/]*\.iml]</exclude> - <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.settings(/.*)?]</exclude> - <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.externalToolBuilders(/.*)?]</exclude> - <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.deployables(/.*)?]</exclude> - <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.wtpmodules(/.*)?]</exclude> - - <!-- misc --> - <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?cobertura\.ser]</exclude> - - <!-- release-plugin temp files --> - <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?pom\.xml\.releaseBackup]</exclude> - <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?release\.properties]</exclude> - </excludes> - </fileSet> - <!-- license, readme, etc. calculated at build time --> - <fileSet> - <directory>${project.build.directory}/maven-shared-archive-resources/META-INF</directory> - <outputDirectory></outputDirectory> - </fileSet> - </fileSets> -</assembly> diff --git a/src/main/java/zipkin/layout/ZipkinLayoutFactory.java b/src/main/java/zipkin/layout/ZipkinLayoutFactory.java index dcfb922..b617be7 100644 --- a/src/main/java/zipkin/layout/ZipkinLayoutFactory.java +++ b/src/main/java/zipkin/layout/ZipkinLayoutFactory.java @@ -1,18 +1,15 @@ /* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at + * Copyright 2018-2019 The OpenZipkin Authors * - * http://www.apache.org/licenses/LICENSE-2.0 + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. */ package zipkin.layout; diff --git a/src/test/java/zipkin/layout/ZipkinLayoutFactoryTest.java b/src/test/java/zipkin/layout/ZipkinLayoutFactoryTest.java index 2a01af8..01d20fe 100644 --- a/src/test/java/zipkin/layout/ZipkinLayoutFactoryTest.java +++ b/src/test/java/zipkin/layout/ZipkinLayoutFactoryTest.java @@ -1,18 +1,15 @@ /* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at + * Copyright 2018-2019 The OpenZipkin Authors * - * http://www.apache.org/licenses/LICENSE-2.0 + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. */ package zipkin.layout; diff --git a/travis/publish.sh b/travis/publish.sh new file mode 100755 index 0000000..e586bd5 --- /dev/null +++ b/travis/publish.sh @@ -0,0 +1,138 @@ +#!/usr/bin/env bash +# +# Copyright 2018-2019 The OpenZipkin Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except +# in compliance with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software distributed under the License +# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express +# or implied. See the License for the specific language governing permissions and limitations under +# the License. +# + +set -euo pipefail +set -x + +build_started_by_tag() { + if [ "${TRAVIS_TAG}" == "" ]; then + echo "[Publishing] This build was not started by a tag, publishing snapshot" + return 1 + else + echo "[Publishing] This build was started by the tag ${TRAVIS_TAG}, publishing release" + return 0 + fi +} + +is_pull_request() { + if [ "${TRAVIS_PULL_REQUEST}" != "false" ]; then + echo "[Not Publishing] This is a Pull Request" + return 0 + else + echo "[Publishing] This is not a Pull Request" + return 1 + fi +} + +is_travis_branch_master() { + if [ "${TRAVIS_BRANCH}" = master ]; then + echo "[Publishing] Travis branch is master" + return 0 + else + echo "[Not Publishing] Travis branch is not master" + return 1 + fi +} + +check_travis_branch_equals_travis_tag() { + #Weird comparison comparing branch to tag because when you 'git push --tags' + #the branch somehow becomes the tag value + #github issue: https://github.com/travis-ci/travis-ci/issues/1675 + if [ "${TRAVIS_BRANCH}" != "${TRAVIS_TAG}" ]; then + echo "Travis branch does not equal Travis tag, which it should, bailing out." + echo " github issue: https://github.com/travis-ci/travis-ci/issues/1675" + exit 1 + else + echo "[Publishing] Branch (${TRAVIS_BRANCH}) same as Tag (${TRAVIS_TAG})" + fi +} + +check_release_tag() { + tag="${TRAVIS_TAG}" + if [[ "$tag" =~ ^[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+$ ]]; then + echo "Build started by version tag $tag. During the release process tags like this" + echo "are created by the 'release' Maven plugin. Nothing to do here." + exit 0 + elif [[ ! "$tag" =~ ^release-[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+$ ]]; then + echo "You must specify a tag of the format 'release-0.0.0' to release this project." + echo "The provided tag ${tag} doesn't match that. Aborting." + exit 1 + fi +} + +print_project_version() { + ./mvnw help:evaluate -N -Dexpression=project.version|sed -n '/^[0-9]/p' +} + +is_release_commit() { + project_version="$(print_project_version)" + if [[ "$project_version" =~ ^[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+$ ]]; then + echo "Build started by release commit $project_version. Will synchronize to maven central." + return 0 + else + return 1 + fi +} + +release_version() { + echo "${TRAVIS_TAG}" | sed 's/^release-//' +} + +safe_checkout_master() { + # We need to be on a branch for release:perform to be able to create commits, and we want that branch to be master. + # But we also want to make sure that we build and release exactly the tagged version, so we verify that the remote + # master is where our tag is. + git checkout -B master + git fetch origin master:origin/master + commit_local_master="$(git show --pretty='format:%H' master)" + commit_remote_master="$(git show --pretty='format:%H' origin/master)" + if [ "$commit_local_master" != "$commit_remote_master" ]; then + echo "Master on remote 'origin' has commits since the version under release, aborting" + exit 1 + fi +} + +#---------------------- +# MAIN +#---------------------- + +if ! is_pull_request && build_started_by_tag; then + check_travis_branch_equals_travis_tag + check_release_tag +fi + +# skip license on travis due to #1512 +./mvnw install -nsu -Dlicense.skip=true + +# If we are on a pull request, our only job is to run tests, which happened above via ./mvnw install +if is_pull_request; then + true + +# If we are on master, we will deploy the latest snapshot or release version +# - If a release commit fails to deploy for a transient reason, delete the broken version from bintray and click rebuild +elif is_travis_branch_master; then + ./mvnw --batch-mode -s ./.settings.xml -Prelease -nsu -DskipTests deploy + + # If the deployment succeeded, sync it to Maven Central. Note: this needs to be done once per project, not module, hence -N + if is_release_commit; then + ./mvnw --batch-mode -s ./.settings.xml -nsu -N io.zipkin.centralsync-maven-plugin:centralsync-maven-plugin:sync + fi + +# If we are on a release tag, the following will update any version references and push a version tag for deployment. +elif build_started_by_tag; then + safe_checkout_master + # skip license on travis due to #1512 + ./mvnw --batch-mode -s ./.settings.xml -Prelease -nsu -DreleaseVersion="$(release_version)" -Darguments="-DskipTests -Dlicense.skip=true" release:prepare +fi
