Skip to content

Commit fd7bde6

Browse files
committed
Merge pull request #39 from adriaanm/autopublish
Support for tag-driven publishing on Travis.
2 parents 45ed52f + fe70f47 commit fd7bde6

9 files changed

+138
-1
lines changed

.travis.yml

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11
language: scala
2+
3+
env:
4+
global:
5+
- PUBLISH_JDK=openjdk6 # admin/build.sh only publishes when running on this jdk
6+
# Don't commit sensitive files, instead commit a version encrypted with $SECRET,
7+
# this environment variable is encrypted with this repo's private key and stored below:
8+
# (See http://docs.travis-ci.com/user/environment-variables/#Secure-Variables.)
9+
- secure: ZEAhn8ozGqcQxvJD7/G3ifou2Vl7OkNzUXM15aKy0FbqLMOzsx3hAKsWEM6e/6d/7phDkiZisers+HOlt3nLwu75M3QLGm5lo4moJJJyx17omlrBQ7+M/hu3ZxqNRCE8oNI41V3pc+ZJQsY1qA7at4NPJbnAXx9sUUO2lGmc4xI=
10+
211
script:
3-
- sbt ++$TRAVIS_SCALA_VERSION clean update compile test
12+
- admin/build.sh
413
scala:
514
- 2.11.2
615
jdk:

admin/build.sh

+19
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//)
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 compile test $extraTarget

admin/decrypt.sh

+2
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

+2
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

+19
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

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// only added when publishing:
2+
addSbtPlugin("com.typesafe.sbt" % "sbt-pgp" % "0.8.3")
3+
4+
/* There's a companion sensitive.sbt, which was created like this:
5+
6+
1. in an sbt shell when sbt-gpg is loaded, create pgp key in admin/:
7+
8+
set pgpReadOnly := false
9+
pgp-cmd gen-key // use $passPhrase
10+
pgp-cmd send-key <keyIdUsingTabCompletion> hkp://keyserver.ubuntu.com
11+
12+
2. create sensitive.sbt with contents:
13+
14+
pgpPassphrase := Some($passPhrase.toArray)
15+
16+
pgpPublicRing := file("admin/pubring.asc")
17+
18+
pgpSecretRing := file("admin/secring.asc")
19+
20+
credentials += Credentials("Sonatype Nexus Repository Manager", "oss.sonatype.org", $sonaUser, $sonaPass)
21+
*/

admin/pubring.asc

+18
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+
mQENBFSAu20BCACAHC5KEbSM7Dm9+ksU12Y7TIP4rLLg94e/jF29WFNnH8P4rTv/
5+
8WNX0OF9gNW5Ltj7IzGGkzLX3HjrEKA7SEaFyTqoCQ+FIlqNNYt8YCScMyTSfYbQ
6+
8GOEBUEcS8HPpZoudX7T1IYIAApl46kD0H4zzPPz2QHu51uj4jyjnIGRcDmHat3q
7+
dIeBzdnGinRFY+h/b4elKI0uEAFe/WmrMb9GpUaparkbNwutwof+7gIs5N7wyamg
8+
tErARSBgs00JJtgh+lyRv7y6T9OkL8p8nylxRGjIpUM3cICBZLTg/mA1+FPvQzFm
9+
AvYQ3cLWeFLobIVjuKSxWKwybdxR6ikCZd/LABEBAAG0O3NjYWxhLXBhcnNlci1j
10+
b21iaW5hdG9ycyA8c2NhbGEtaW50ZXJuYWxzQGdvb2dsZWdyb3Vwcy5jb20+iQEc
11+
BBMBAgAGBQJUgLttAAoJEF2pklhwFz7lp+kH/21ydQFQKdIv91iUNkwdbRbFcOoY
12+
1LTZBAg2QaWMgqo9ZqZako09IlHouzMs+8mpgu3iC0spuzt24dn0He7ruKbnUb9F
13+
AvWcyG5Kzw/zy/wvC8IZNtLqMP5RKOJmNZydoMj2DUcfPnldAwKd/UGmOyn4AEvW
14+
ND0Qi59mPcJy/mCCDyjYfu+tJQCRg2DEhKtNX06GskZTaBeuqEVt58ZdE2aAq/X0
15+
2afs/Pv160NvbzgQ5vroamvwr2Q8E5aCiCcf7DZDyG5Kibt2Z7IvrosdAJsS75xQ
16+
Q+1w7E3af7EdVZicMjkRPEhTbrtOInCRslIfKGp221mNvl7Au/ztfGPMUKY=
17+
=/HZD
18+
-----END PGP PUBLIC KEY BLOCK-----

admin/secring.asc.enc

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
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

sensitive.sbt.enc

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
U2FsdGVkX19ymDGvEeR3Ld7K7e4jzUoCqTw/KfHdPdtZbPDpAc1txKP1i2y8T6hO
2+
y4QJTEhmKXsIJEnDTjyM0wEzh/yYjdE6fGNF43cW4ysSeSEBPy104gNhQXKsyohH
3+
JIb0suQ288cP8kZ9IBq/osXkWU0qe+++PJNMeUATaU+ek/z9f/YfvcWZ2jJIKvIk
4+
aRMYX/Tpkm70ap9Ko9bdDsgV0/OrPnWT7It0ITIK4P7uj+Yyl9AYBRMT1sk0vqfX
5+
oiArljvbeswaS+Ydll4u+kp/hgPMbE1IeYtmey2m9ls6FyLn+D9AfEIpUKg011K2
6+
kVEU678T3LqTqzJvvYhRfDR+KNw/n4l1EPj/JTubMx4qZLmDkoE69o19/lNffrCj
7+
6B1nj4/2VU79kG+XpXDXEw==

0 commit comments

Comments
 (0)