Skip to content

Commit 9a868d2

Browse files
committed
Merge pull request #35 from andy1138/autopublish
tag-driven publishing on Travis
2 parents f89705b + aabe83b commit 9a868d2

9 files changed

+144
-3
lines changed

.travis.yml

+11-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
11
language: scala
2+
3+
env:
4+
global:
5+
- PUBLISH_JDK=openjdk7 # 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: "g/d6gjq6g+t5ieI6DwOiL5k8XJ/ethlZ1ZZDA/uvOsCfkIu0MBL2cYGmwQ0gcBNBQ/02wZjXnTIgMhFhYLcgHtnicAjy+53fhjCYcTM6A61DCPhJ6txOjEEPrpnlqbvKauw0WuVGT8Kd52bhaMXPCE2GOWgPe+bJfDUTHSm86dw="
10+
211
script:
3-
- sbt ++$TRAVIS_SCALA_VERSION clean update compile test examples/compile
12+
- admin/build.sh
413
scala:
514
- 2.11.1
6-
715
jdk:
816
- openjdk7
917
- oraclejdk7
10-
18+
1119
notifications:
1220
email:
1321

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

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

+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+
mQENBFSA12QBCACmD7LIMlzS+Qf/dyyQQn2wjgrk9kCazfVP6pb++wizYq4AkN6Q
5+
cFti0YCSB+EzS+dqFO4wSIprenB/jfuLEnjfDSupjFLgTmjo8Komkk/9ynHSowJl
6+
ofkDPS/qgcr1mAmuc72CrIqKfc3Dojscug3ChmY3tbezAgPmGV/tu8V/uAAsnVOE
7+
AsmCOimTcWjA6bgvEkPyyzHp5uinU29tuFAxIAm2pJ+EmNebRnVF3lG+GotP2Ojy
8+
wsfS8iMmV2g4KQd4WmFes9F2R/lkApGgnDTimk9Rj/QswhPuVeiHPS1OBjWPqoEw
9+
N9lL1lyiOYoX+MHryTlJE7lZqDHwhUAiQxatABEBAAG0LnNjYWxhLXN3aW5nIDxz
10+
Y2FsYS1pbnRlcm5hbHNAZ29vZ2xlZ3JvdXBzLmNvbT6JARwEEwECAAYFAlSA12QA
11+
CgkQwdZV2OHM6Ia6aAf+P0WUtZ+0SXbUzVqF05PT/mfNzsEx9vfKap4hRacVZqWR
12+
aQk6Y5FlX5p+oSRVcXEei+KcbRFdVB6KYueuwYOFZd+6fO8xbNTImgzz0DJ/Uh6A
13+
10Es3PeT/GLvlrbSxO/Cf1WSO8f6+CPPmtNKAAl1m6dvTTbAikcbiWzeO4QQuVsS
14+
nM1H6rTGUKeLmhxSwyI+jvI62bJF9Kiusa0+beIwok0CW+gOwhg45WG1FP9tv+Dl
15+
H/61TUg3ev5vW4CFuErx5hUjIJgjoDW42xE12R9MhvCkxCUT5D/05RhfQ/G+kJYa
16+
iBEK413XaGDgDgMoXlaQxzZQ0u9v/PNg+0jqDQUzGA==
17+
=3ZlV
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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
40+
AhiifxrEE3x455AiETaLcQ==

sensitive.sbt.enc

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
U2FsdGVkX1+DOObIhXyopFDucfOJpqONi2L0QPFbK21VMfImp5HjvaQJPu/dQAg7
2+
oKQE17ac5CdUEqd2Tvh7kwGxoAb2huyZYEVeHR/kgkCoQnSzi2C1yYcVKf8xVKgc
3+
0UrsRCSayX7mTII72mE0qM3XjB7TJxPhCnEdb+Cdg7TwuGd9U4uIiKHV+BLy7+Y4
4+
JwHmgYiRdZCaZ124iQNhAIzzpVp3dKrl2qqVKF3WUqjA3L/EjyebF4O/FNGdaops
5+
yff7sSc+ELw0BiKrHHFug802Ii/36CtKhcTGseWSlmqhEu86QBhxHTblUKySaZj/
6+
cq/oRW3Lz5/pBuLJs6kNAyQmM5bs5UADvv935cTokW0DCCu7RMbesUs/CJqTE2uU
7+
NkfppKMwKjFl9PjintVUOw==

0 commit comments

Comments
 (0)