Skip to content

Commit c5fa678

Browse files
committed
Support tag driven releases
Creating a tag via a GitHub release will trigger a Travis CI build that will publish to Sonatype OSS staging.
1 parent f3d7993 commit c5fa678

File tree

9 files changed

+141
-1
lines changed

9 files changed

+141
-1
lines changed

.travis.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
language: scala
2+
env:
3+
global:
4+
- PUBLISH_JDK=oraclejdk8 # admin/build.sh only publishes when running on this jdk
5+
# Don't commit sensitive files, instead commit a version encrypted with $SECRET,
6+
# this environment variable is encrypted with this repo's private key and stored below:
7+
# (See http://docs.travis-ci.com/user/environment-variables/#Secure-Variables.)
8+
secure: "sGB53QddmPmQ4ftCGYxT0gaJcFt0bpMJoGxJRJCFTxdzg6nNMqJ9qDWbyJo7vDFx30axNQlyBH928pUiS5KfsmvzVdoVHUBEUJlF1lBurlpx06tGLuBdcFDwUF5ybi7SGRNdUPuX/6uLdgK5clpcW16/pcfT5Qr5vo/0mvPY85s="
29
script:
3-
- sbt ++$TRAVIS_SCALA_VERSION clean test publishLocal
10+
- admin/build.sh
411
scala:
512
- 2.10.4
613
- 2.11.4

admin/build.sh

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#!/bin/bash
2+
3+
# prep environment for publish to sonatype staging if the HEAD commit is tagged
4+
5+
# git on travis does not fetch tags, but we have TRAVIS_TAG
6+
# headTag=$(git describe --exact-match ||:)
7+
8+
if [ "$TRAVIS_JDK_VERSION" == "$PUBLISH_JDK" ] && [[ "$TRAVIS_TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z0-9-]+)? ]]; then
9+
echo "Going to release from tag $TRAVIS_TAG!"
10+
myVer=$(echo $TRAVIS_TAG | sed -e s/^v// | sed -e 's/_[0-9]*\.[0-9]*//')
11+
publishVersion='set every version := "'$myVer'"'
12+
extraTarget="publish-signed"
13+
14+
cat admin/gpg.sbt >> project/plugins.sbt
15+
admin/decrypt.sh sensitive.sbt
16+
(cd admin/ && ./decrypt.sh secring.asc)
17+
fi
18+
19+
sbt ++$TRAVIS_SCALA_VERSION "$publishVersion" clean update test publishLocal $extraTarget

admin/decrypt.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/bin/bash
2+
openssl aes-256-cbc -pass "pass:$SECRET" -in $1.enc -out $1 -d -a

admin/encrypt.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/bin/bash
2+
openssl aes-256-cbc -pass "pass:$SECRET" -in $1 -out $1.enc -a

admin/encryptAll.sh

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#!/bin/bash
2+
3+
# Based on https://gist.github.com/kzap/5819745:
4+
5+
echo "This will encrypt the cleartext sensitive.sbt and admin/secring.asc, while making the encrypted versions available for decryption on Travis."
6+
echo "Update your .travis.yml as directed, and delete the cleartext versions."
7+
echo "Press enter to continue."
8+
read
9+
10+
# 1. create a secret, put it in an environment variable while encrypting files -- UNSET IT AFTER
11+
export SECRET=$(cat /dev/urandom | head -c 10000 | openssl sha1)
12+
13+
# 2. add the "secure: ..." line under the env section -- generate it with `` (install the travis gem first)
14+
travis encrypt SECRET=$SECRET
15+
16+
admin/encrypt.sh admin/secring.asc
17+
admin/encrypt.sh sensitive.sbt
18+
19+
echo "Remember to rm sensitive.sbt admin/secring.asc -- once you do, they cannot be recovered (except on Travis)!"

admin/gpg.sbt

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
2+
addSbtPlugin("com.typesafe.sbt" % "sbt-pgp" % "0.8.3") // only added when publishing:
3+
4+
// There's a companion sensitive.sbt, which was created like this:
5+
//
6+
// 1. in an sbt shell that has the sbt-pgp plugin, create pgp key in admin/:
7+
//
8+
// sbt
9+
// set pgpReadOnly := false
10+
// set pgpPublicRing := file("admin/pubring.asc")
11+
// set pgpSecretRing := file("admin/secring.asc")
12+
// pgp-cmd gen-key // use $passPhrase
13+
// Please enter the name associated with the key: $repoName
14+
// Please enter the email associated with the key: [email protected]
15+
// Please enter the passphrase for the key: $passphrase
16+
//
17+
// 2. create sensitive.sbt with contents:
18+
//
19+
// pgpPassphrase := Some($passPhrase.toArray)
20+
//
21+
// pgpPublicRing := file("admin/pubring.asc")
22+
//
23+
// pgpSecretRing := file("admin/secring.asc")
24+
//
25+
// credentials += Credentials("Sonatype Nexus Repository Manager", "oss.sonatype.org", $sonaUser, $sonaPass)
26+

admin/pubring.asc

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
-----BEGIN PGP PUBLIC KEY BLOCK-----
2+
Version: BCPG v1.49
3+
4+
mQENBFSzVhYBCADp261YcgfWCNZ/IrSpvk1LaqnomeDjktUuCy3LD0WQ/B750vpV
5+
gograxIWDfGK3TaHHdiRTV0OmfhhA6Dv/E8wFiHc1psn8mtaL+tQQcFHCLqBnTEe
6+
/VQXZLrHoFsMSBRrFY0rHZGXtCS0DKIxSeqlba4RH9eS4Q35LzBjMBLKewBCwben
7+
mDMOMxLgTS21xqe7OoyrcQGg3nFPLBMM8hgrqmVH9lYc5c2NuTMSHC4/wUozTwMm
8+
SxmEQ1Ga2lEpVAcaJ6r7bz0+QwX62cMs57nkGuf3SP2D5/+igDkkoVb447wESHHG
9+
s3BZw9ThblHXJOZ5Xb64fvQ3/vCjivLqZIepABEBAAG0NXNjYWxhLWphdmE4LWNv
10+
bXBhdCA8c2NhbGEtaW50ZXJuYWxzQGdvb2dsZWdyb3Vwcy5jb20+iQEcBBMBAgAG
11+
BQJUs1YWAAoJEF7zF/88US8Xdw4IAJmPcOka4Tc5s5eYAdwZuNOqUiuNO3/9+Za6
12+
tdGZQfQxUVN5PdgXhAGiKfRxrtSTjfzN+O/wiF/7NDqOQXBHNEx53Rzucq770WvL
13+
G5hUwr8MJB577OIyU2CQquslva3h2LbOt8lEHplLy0tI00zm6ueJNmxq36C4Mu3h
14+
l6QMs0zd29OqtUjWpkUNRnz+1HSdhRCPZNhX1bjhRaJARrhUtP24+g3wKgjg3H95
15+
yjPh4951r21w/x7msu+w0vSpdA7j/VJIzql6+2exh14YeLx9AFVDgvkJE6McHXX3
16+
ccr1eQ0FjYpWWUrBMXpS1Pz4SiwXEOOhs1xtsM7fHuikqhkXfHg=
17+
=oZnQ
18+
-----END PGP PUBLIC KEY BLOCK-----

admin/secring.asc.enc

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
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
40+
pCaY3ZBmWKT5lSx0yURiGg==

sensitive.sbt.enc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
U2FsdGVkX18PW91o6/n5xLjlSIP+q3wKS3jHVWD5fbGyq6eu9milKZ3bl6i3YmQX
2+
t6NiVtuFuJjix9pqlNgSc4SNInGnvI0kfyYTtcp0/CdZsKsmfUL5lRYxyOo2NIM5
3+
z/yXD7C9eU1ul48CXNgVOAC2F4w25bdI0iQzvUPRYG5gkiofdP7KL6n0yOlGnSJN
4+
M0KhTrqCLcqVG4cRBZ9Q3+Rip8Lr/F00NSBUcSyL06kag/Zd/iCf3xm76eX/WN59
5+
Wofi5p+nvPqYSCJc+e/8Dx+aiyj0m2aeXYzwiYDdUQlBGUk8f2+CPy1NlEPGMuET
6+
6p2zc60YT/ohUp1YUGxbvIlZ7S1FzMmiJvpT1VcnouIAYAOVGHqW0ClbPmmXiTkW
7+
W/cGjYYDKiZNQ+8qXhfrF7rxJYiJ8LPMioh5mnzlBSk=

0 commit comments

Comments
 (0)