Skip to content

Commit 2d43d06

Browse files
adriancoleAdrian Cole
authored andcommitted
Adds travis configuration to publish openfeign (OpenFeign#417)
1 parent 17cb578 commit 2d43d06

File tree

3 files changed

+196
-19
lines changed

3 files changed

+196
-19
lines changed

.settings.xml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
2+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
4+
http://maven.apache.org/xsd/settings-1.0.0.xsd">
5+
<servers>
6+
<server>
7+
<id>sonatype</id>
8+
<username>${env.SONATYPE_USER}</username>
9+
<password>${env.SONATYPE_PASSWORD}</password>
10+
</server>
11+
<server>
12+
<id>bintray</id>
13+
<username>${env.BINTRAY_USER}</username>
14+
<password>${env.BINTRAY_KEY}</password>
15+
</server>
16+
<server>
17+
<id>jfrog-snapshots</id>
18+
<username>${env.BINTRAY_USER}</username>
19+
<password>${env.BINTRAY_KEY}</password>
20+
</server>
21+
<server>
22+
<id>github.com</id>
23+
<username>${env.GH_USER}</username>
24+
<password>${env.GH_TOKEN}</password>
25+
</server>
26+
</servers>
27+
</settings>
28+

.travis.yml

Lines changed: 49 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,54 @@
1-
language: java
2-
sudo: false
3-
notifications:
4-
webhooks:
5-
urls:
6-
- https://webhooks.gitter.im/e/110a7c0daf817ba48ccc
7-
on_success: change
8-
on_failure: always
9-
on_start: false
10-
jdk:
11-
- oraclejdk8
12-
install: true
13-
script: ./buildViaTravis.sh
1+
# Run `travis lint` when changing this file to avoid breaking the build.
2+
# Default JDK is really old: 1.8.0_31; Trusty's is less old: 1.8.0_51
3+
# https://docs.travis-ci.com/user/ci-environment/#Virtualization-environments
4+
sudo: required
5+
dist: trusty
6+
147
cache:
158
directories:
16-
- $HOME/.gradle/caches/
17-
- $HOME/.gradle/wrapper/
189
- $HOME/.m2
10+
11+
language: java
12+
13+
jdk:
14+
- oraclejdk8
15+
16+
17+
before_install:
18+
# Parameters used during release
19+
- git config user.name "$GH_USER"
20+
- git config user.email "$GH_USER_EMAIL"
21+
# setup https authentication credentials, used by ./mvnw release:prepare
22+
- git config credential.helper "store --file=.git/credentials"
23+
- echo "https://$GH_TOKEN:@github.com" > .git/credentials
24+
25+
install:
26+
# Override default travis to use the maven wrapper
27+
- ./mvnw install -DskipTests=true -Dmaven.javadoc.skip=true -B -V
28+
29+
script:
30+
- ./travis/publish.sh
31+
32+
# Don't build release tags. This avoids publish conflicts because the version commit exists both on master and the release tag.
33+
# See https://github.com/travis-ci/travis-ci/issues/1532
34+
branches:
35+
except:
36+
- /^[0-9]/
37+
1938
env:
2039
global:
21-
- secure: YIuMCulUHkCrZDzrIZj+ni+QoQYT3H5C6z32FDeRb4HD9GQzuYQ/+dLWZ6p/X2vkPv1FBlXYb6hpw9PvRLPkGqic0oKX3kMj5LmaXw6nmrq5jvmB0qAjoQ0ukhSUzQVK+43A9aNrAEsHRdrESjleeR1ISeQsUdkikaSs2D1+gQI=
22-
- secure: l/1XVG7NHsVwQONy/NF4PlFOFEC2QzE54wFdrTvQzMi6fZrit4C27NW9v0NUohtHjLOVQyx0uLfatt/ZV8gtS+fzfaJj4g9G6Gigv2JdRI5aFn+RPCzU5dioZNBaLB5y4pLkMTnbhLa9wLZxCsmbmG1unY18pF5fHgt/nXzFf4w=
23-
- secure: QaEFxVi7lEef0bE8gUWdA7sHT7GJtpiQKOp6UwRdrPQADz+Xg47D2aBr15HmPyo/Ldn6Vm+QSCia+JrRZFCb8NTcBR7u8ZvNzY7I4RXdxTRt54eiyNT4EsqG7vLIECBoKE2CJf1XYv8PO+2Cxsd7D5STzpgtKM3z59h+J0wPmHw=
24-
- secure: VFv9NqL3mGQnIjLRZkTmMlnNCtWu2co8V54oQYSTgYT3HmR6ootn/vd6YL4p48abHlBbS3chGefrfaoY5SkOD6oewwNimOPBn+u2uIsBKfL3E6ROrO6Enf0YdIPHBmhXT8Lasmc0ZMqkGx32n0JwCou6Md8c04i/wCp62QsKXbk=
40+
# Ex. travis encrypt BINTRAY_USER=your_github_account
41+
- secure: "GB5nPtjTvfrPIUhPZzJst+oDxy/QD6d0qRiJbfAhnYfwjJAmLviXWEgZL3cvK7Cb6MjnuBesC8dit2hdqV42lUektvZScuNiY02HJogjP6EqUgkmRCngD+Xp6Tjalj1s7VKtDB+QFYyQrD+SKTpVI5hbnFaTU+SnCqFz44PZjI4FksnvU7zoWCvJcaKw9N36Z+i3J9XkzMyxDoJh6Q8vyOs21eqeE0dKB1ryHb7v8wa93i8/4dAmi0NXJock4F7XsLn36vAfmCQ809JKJrS1oADHN8CIIk3dFkRnmsRBKYfaVu8ti/hFx0hGGx3wvoDbyn81XZrf8krXziEYBdwcumDmEJiMf5Suacbu17k8XIUlJUbHLAqjmnUKX7EBaE7MnG4T44ZNpJAynAihcqx78015x5gUDFE/gGBW+KODlwvLleR+kUiJegnWK9Z5K/iG7VTp5dKyJ8//5AWbZaGQsHbV1Zrf935zJZOmkDctsLlBvq/EXQoF7rqmySQKowIQrxfRYDcWZLLv0ofItetVJBww0pT4P1fdRV8xeVP/RuecA8wjB5oQkFyy8Cpi1fqKN6sRKSkdcqSOEt553Ai8bJJ9JPwSo0qpthHXLuBrkJhzXoMluPz4qC6/x+adzn17a4r0Zecz09lExXThKhvFBmB4yksnrRQQlLAzEkSrb0g="
42+
# Ex. travis encrypt BINTRAY_KEY=xxx-https://bintray.com/profile/edit-xxx --add
43+
- secure: "SlnGkgY8eT+G4mKIQc4L45iX6eIS8c6bSnGDbcpWVl5/jb99zYYrRAhffMfN+p6pXKj7KiojOTbo0D++JyiHI0x9h1+HPQuER3xCuYSniGWIB1Ao8VTncPpq/3ro6jg2A4qHnk3dVsvzsEvNBvNHu/37pMm1LkLWCQH19NCXj/3uuqPylmryEbwuG5q3JqHUdsXWn+LXAPmHTO38Idj9Lbgue5ocre2uIHLypDQbv7/74k9MQMvk9m4l7X96a3K4dOomU+3KzYTPbFwnS7LnsZ3S0ztHLJ8O4/scqWOUMlWcTHm7sHcVP9GBZ6bj0wz7+8cYIr6ZanorPbfz+eoeu7ANPK6ARkxTDtEp5GBOYUGQ3EKTPeC5tVhm6Hs7tsd0oJyCPzV6kAd0lecDFRFWherqSpdW/zOtU7WzHyO8WhTjaH8ISetPbSegmzHLkVw436dbPgXDhwC92P849pIVwi4DrloQKN8vs9FNEdT7bFYlzkhoKDdxmHb85qzdvTMKv2Z49VhSLQPoKE0IEeqy5AEUWnuNcbnS8viclm4K2HGJlHmg9xcnDaS3lTRPNEVTZssnjaE0t5BHtHuGOiXfY4ZVSco1NoZmmlbCJShAkbFLHrQXAhQAmPWZGpzGqjz4AkHavsBCLDQ6O/IXmyIVYV/UE1EBh/jfFvXOcsGNA98="
44+
# Ex. travis encrypt GH_USER_EMAIL=for_github@domain.com --add
45+
- secure: "oDiMvNeql7jCwGko1njuLUV1W55dDaeMbjFcxPFDD1Y2Df+t+AEa+5UuTdalLP82Kcas0GaV8pBaf0HtJR96yqCnPpGNeoYYKTl5pqT/sBCPoTAu7WYWSPAuEb201anSNgioMxPanWemenrijSTnOCCtl8WyGqrIJMz95UpnmL2bj38D+s5KXr8jm6bOe4arPMvsqeKin9KSoTuIn3Nc4JwEWfoYeLMCD78L7sjZn+5WaA6Sc1DarRf5hHhGp/LVDFzDHJ4KVWsaG8erBehj8p12ifcPaxZFJS+FgjvUIHV4sYPCZy28fttCsRX+NAXWQyYXuQizSTkz/ozt+TNta3JQBQVVvmFcUMOfW95EH6ovwLHJHsUfpRNtuOh1uu6ed2VBCHQ02V0zj0vmAhZWWVRWDQR6/FIewhzyclE9uGoCjmascbjV9E5V+ZaCSNU6msgexf9f52uHdrfRIALucfJumm597ouLzZycomYtttPSVd48V6up4lqm1o6dKIpcHY0lpRlE958yOFNcCeCiEgGjeA4oxrfWSSPwkBEwtZn51hke3t8F1f5JdV89t1vkShp6PYfDgeNbDqYexhoNM/zxPyj8pPZi3+T6zp5UflPhgTeTVx/cibJlpHuoxAkW0GKyNBTzk6u4NfsPnJWeihAqtMZ1w7kv58j30qR+9cY="
46+
# Ex. travis encrypt GH_USER=your_github_account --add
47+
- secure: "G3sZ6UUVL9Adwu6G0J08YdnVKXGPVSto/Y6EKPuxhywOnESEgbS/UVrP5UL87zLt0wlCLfPybivkbRomaA2W82gmwnsY2O6vxzULYpywADpvD+wkG1aPG20egcYtETSEoKGQec+0iY0nSHUeJXit7wMdDs59rcsMA9NuYPXQp+hemf4cN1wrof0o6wpi70d8qgqhkEVdpSBkfattDtIAxKUj+bsKqcN6WCUQpAGQDoyetJ2OZySehhldis5r8sPJBgk1sNlcwIRVV701sbV94QkeOIZ0T60sLlaQeG5D+/H1Kdx+z788CdU3/6aMhiT5osKbAh/HgNh1au9jlFpWYODbE8VXAqUg9JQvu4R4dtNTN5uFEXDCO+uXuv8kHO+GS9dYt63xwz2WRZ3UDr5JcHgfWyndQoiP5eJq35rG++hX4Sd3yjq/Ks4rBETaVfP4FzCz0AePsOX9omoVw+wVS+XOOE4k3aJpYksqaX5MKu7xsVC16v28ZejBXOB4AspBrxvUhM17RwvZYmbuy0QD9tUQI5aEoDimShGY20VWd2XKf8FR4sx/RxRG0iNtL8vtvnEA3M8a0ktFy73zstOnHSItCWGuRtGvMo/f7cT3uH2NfjnvVVeelB5r+cgZcDc1RllRISbv495voQyzyEPIW3EvU/LVtpsfhAOF5nv54wI="
48+
# Ex. travis encrypt GH_TOKEN=XXX-https://github.com/settings/tokens-XXX --add
49+
- secure: "AmgKwBBbSCJKvTvuRtbqCqEz5jBABwXMUZBmdMjvfN2fFhEKHSGj5JAYrKYUbatDbH1GlI+j1Ep/Asgq0bH5oFGQ32p5xeHgZsmDNVO/QuW5E97YMHZfOfiWMxnq3Vh5PwLVZOqKwteK44V5IDcslHW+0Dqe/0a6aL5UotmzswOsbRW0xgtjKQaJn9VnRT9SjAlJ3jiowVcPkS7e/uKZKKil3K/2t4Fup9ahbwJaMrGnx9UCOS3xEho+UXH1cH9VfqhtESUj0kG7nafFlgLOV++tyWVf9u8gfbkbmadu7frXtA+mf0Y4RZtLLvTAH1y3hpA/+oVcMahZ2PYZRrXiUg03fdrXK1Ek2FzSBV4PVAT7bl44f5cj+9lkfDMfMFRQmAFrBG0/IH2pWehcSbqrKppH7ObIjSeztK6Yrjioj1BpnOOdhiPnJTGvauJUGvh3gIBidvBlRjBgBP9v2Pz8lcSEvjyneO6c6hujPl5CGzqgUCIBv1B6Gi4P3lcwf7kfTos4NS7wwXFY3zU5nvNVhPv3CREs3HqJ4DOX2x3e7y53zpDaVpMbCajUTJAsdxkeXBy43lqVeVrnSh1Mi6dO5vgrp8Z7H6X572ieD3z0Oe+84rS2CwDprXaz0Sm4EZ5WjDZjeXC9Q5lZiPU/9D9NsyP6tNC/+50pYaVy++h/BAQ="
50+
# Ex. travis encrypt SONATYPE_USER=your_sonatype_account
51+
- secure: "pcftJqyVo0EkttZCa/XrJYJJe7+afxBhJyswPGOyxtVnu57S+ELW4R1mtLD4dZtUWhLWTpKtKqse9Gmym7GxVLMd+wFTQGJiqGI+UA2Mk/ECF955twVIbrc4DBSuI3KSpyFtKX9X/58RBVM0VJK06eWNugh1brDGUpX/lTMJ80bQ83p3FMUEZcmIuZDpoT33SNjJN0XIFoGE+r0GYuuS28vhPREzIAOTy2FQgFlgJq5LtCIKxglSfmBniPYmFIOSbGokwNJiPXCYOukYfa/V2byDfXD9Y7Og5RL3BV3hpCphXpWQK9nwLPNlA92IPtM136PCsPn9MEe7DL0uZetT5TspK1BVydyg2lsyNgoi6+iXuRQjnPHjrzSHtJpPTysp4JVpgxWa+alDdDuPRDwJpd8ynynxal0qboBuZBPR6LyLs8i+DNjScm2UyT9A/9uZ6ehmUSTDQ4VBe5tCKStsdVJ/7i+JdGAXYHwmtFS8PU0pCrGkWhOZh83hWOlJ+Pljk7W9IzDbg6igdYPif1duqkDGWhodK/xnNIvHeR/8mtmrBwnnEsBOvAU3fVI/3JIk0fzD0yQ5Uayh8hWO1SgIAKpZAzF/NT1XYKl79XyypcASQhgYqYR8RhB/t8GRhkdq/0EMC6xXoy4ogWrFS97+HuTV3Im3boGLYKlwGq/+M1g="
52+
# Ex. travis encrypt SONATYPE_PASSWORD=your_sonatype_password
53+
- secure: "Rf+AgQIIL6tBe4Sp0fthSAUAdPvHQXMJtcWpThoPDj17aV8M5kPjtDqVjcx7da3v/oVZ9GhxFlXNNSkQLGfxxazOLGDMljVo++4Cn3YAPDVSjdMXp3O4EEM8/mkju+Jm061DbqELppkho2x717UhBsgHGF66OOYctzCjZt/bLozBsiOReVQ48aFXF1VVMIL9SrNJcFSWVekDZyp8oE70K1PLqNpcd6CMOKn95ab/m53TCA23cggMjF0/X4jlzKURaoTJmDUdSXNW55Ll/OvaOASlJ6eRZ8yuACnYbjXcR+gdFtrXfsUFGDen3/uRRQ78XsfiYXeYcKfQlEwigxXW3Z/NC3gKwP1LR5L92L5tHXVKJvy1wrwjUasnKnJZPyzsNnTgkl1ljOsa5IMyjzIq262rUjmh7DHGR+kttUBkgFzSY3iCkDj59oirE65JZiFEFHbXBRll7AB5qRyFlhLOp4b76cR4IdRCtOVXeoTmdK5aC3q1i1OweYnHECu8EkTosi+GT8UzmWE14zzKJX7w/reFCZS1WMg3HnsQOkXfXJZfvSl2w5Se8mOtUnP20qv6pPOytWFCcJwHqac9vx9TjUOTZhYhK4/F/IX09awfQUXI2vBQrD6zKqAn291192PZ8TosNdyiK5IH/pb/UmNFz22ChT70HChsw1bvtAtY090="
54+

travis/publish.sh

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
# taken from OpenZipkin
2+
3+
set -euo pipefail
4+
set -x
5+
6+
build_started_by_tag() {
7+
if [ "${TRAVIS_TAG}" == "" ]; then
8+
echo "[Publishing] This build was not started by a tag, publishing snapshot"
9+
return 1
10+
else
11+
echo "[Publishing] This build was started by the tag ${TRAVIS_TAG}, publishing release"
12+
return 0
13+
fi
14+
}
15+
16+
is_pull_request() {
17+
if [ "${TRAVIS_PULL_REQUEST}" != "false" ]; then
18+
echo "[Not Publishing] This is a Pull Request"
19+
return 0
20+
else
21+
echo "[Publishing] This is not a Pull Request"
22+
return 1
23+
fi
24+
}
25+
26+
is_travis_branch_master() {
27+
if [ "${TRAVIS_BRANCH}" = master ]; then
28+
echo "[Publishing] Travis branch is master"
29+
return 0
30+
else
31+
echo "[Not Publishing] Travis branch is not master"
32+
return 1
33+
fi
34+
}
35+
36+
check_travis_branch_equals_travis_tag() {
37+
#Weird comparison comparing branch to tag because when you 'git push --tags'
38+
#the branch somehow becomes the tag value
39+
#github issue: https://github.com/travis-ci/travis-ci/issues/1675
40+
if [ "${TRAVIS_BRANCH}" != "${TRAVIS_TAG}" ]; then
41+
echo "Travis branch does not equal Travis tag, which it should, bailing out."
42+
echo " github issue: https://github.com/travis-ci/travis-ci/issues/1675"
43+
exit 1
44+
else
45+
echo "[Publishing] Branch (${TRAVIS_BRANCH}) same as Tag (${TRAVIS_TAG})"
46+
fi
47+
}
48+
49+
check_release_tag() {
50+
tag="${TRAVIS_TAG}"
51+
if [[ "$tag" =~ ^[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+$ ]]; then
52+
echo "Build started by version tag $tag. During the release process tags like this"
53+
echo "are created by the 'release' Maven plugin. Nothing to do here."
54+
exit 0
55+
elif [[ ! "$tag" =~ ^release-[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+$ ]]; then
56+
echo "You must specify a tag of the format 'release-0.0.0' to release this project."
57+
echo "The provided tag ${tag} doesn't match that. Aborting."
58+
exit 1
59+
fi
60+
}
61+
62+
is_release_commit() {
63+
project_version=$(./mvnw help:evaluate -N -Dexpression=project.version|grep -v '\[')
64+
if [[ "$project_version" =~ ^[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+$ ]]; then
65+
echo "Build started by release commit $project_version. Will synchronize to maven central."
66+
return 0
67+
else
68+
return 1
69+
fi
70+
}
71+
72+
release_version() {
73+
echo "${TRAVIS_TAG}" | sed 's/^release-//'
74+
}
75+
76+
safe_checkout_master() {
77+
# We need to be on a branch for release:perform to be able to create commits, and we want that branch to be master.
78+
# But we also want to make sure that we build and release exactly the tagged version, so we verify that the remote
79+
# master is where our tag is.
80+
git checkout -B master
81+
git fetch origin master:origin/master
82+
commit_local_master="$(git show --pretty='format:%H' master)"
83+
commit_remote_master="$(git show --pretty='format:%H' origin/master)"
84+
if [ "$commit_local_master" != "$commit_remote_master" ]; then
85+
echo "Master on remote 'origin' has commits since the version under release, aborting"
86+
exit 1
87+
fi
88+
}
89+
90+
#----------------------
91+
# MAIN
92+
#----------------------
93+
94+
if ! is_pull_request && build_started_by_tag; then
95+
check_travis_branch_equals_travis_tag
96+
check_release_tag
97+
fi
98+
99+
./mvnw install -nsu
100+
101+
# If we are on a pull request, our only job is to run tests, which happened above via ./mvnw install
102+
if is_pull_request; then
103+
true
104+
# If we are on master, we will deploy the latest snapshot or release version
105+
# - If a release commit fails to deploy for a transient reason, delete the broken version from bintray and click rebuild
106+
elif is_travis_branch_master; then
107+
./mvnw --batch-mode -s ./.settings.xml -Prelease -nsu -DskipTests deploy
108+
109+
# If the deployment succeeded, sync it to Maven Central. Note: this needs to be done once per project, not module, hence -N
110+
if is_release_commit; then
111+
./mvnw --batch-mode -s ./.settings.xml -nsu -N io.zipkin.centralsync-maven-plugin:centralsync-maven-plugin:sync
112+
fi
113+
114+
# If we are on a release tag, the following will update any version references and push a version tag for deployment.
115+
elif build_started_by_tag; then
116+
safe_checkout_master
117+
./mvnw --batch-mode -s ./.settings.xml -Prelease -nsu -DreleaseVersion="$(release_version)" -Darguments="-DskipTests" release:prepare
118+
fi
119+

0 commit comments

Comments
 (0)