Skip to content
This repository was archived by the owner on May 3, 2018. It is now read-only.

Commit 7caea33

Browse files
committed
Merge pull request #8 from adriaanm/autopublish
Support for tag-driven publishing on Travis.
2 parents e9b3200 + 69a7a63 commit 7caea33

12 files changed

+149
-6
lines changed

.travis.yml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,16 @@
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: "L51aaOUw+VZQB6XW4e3MrediaFx8hH876sSXUkEDyoYpWo+xYOBS5xj9zlTAuIDFunbsetk9CX1q22nYdfQjhlb49bxm9WyOsZp1ZmoEmWUG3NoEAZVu0dWt9Gtn1Qz3xiBiS5kzpWMEviBH/DyE1Go2BateUpzs2CfGW8eG0ss="
10+
211
script:
3-
- sbt ++$TRAVIS_SCALA_VERSION compile
12+
- admin/build.sh
13+
414
scala:
515
- 2.11.2
616
jdk:

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//)
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" compile $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+
mQENBFSA71YBCAC1XINswc+5P1WsKqpbaQRtKa4JHrOXzqAmYtFERAapIDxnkeR1
5+
A+JbdnZluqlAp3rpho+7LGP8Cf39u1YS2/OKrp9ZXpCPef/wJMUvgUP4ISxmUSCu
6+
+3ZdXqA03IyeJfT82n1QmFbFEHXIfmW9yi22ObF4L1TG0o5IC85rQ3o0CEda75jH
7+
Q+jn2bGp5xTo1vyjqDaGHQtBk1CzQXObOVbWTr9R2V+Z7VEXiIqWuywgjOqn23x8
8+
jDjy3N6dyWIkafHukyEurFsGUiXYoiJCOOYXaQbkgOCIOtgcRikLtExPgqjbIwwj
9+
P7c5s8XvPVskjDN6myMNC+ABsj1vkYItwG7RABEBAAG0OnNjYWxhLXBhcnRlc3Qt
10+
aW50ZXJmYWNlIDxzY2FsYS1pbnRlcm5hbHNAZ29vZ2xlZ3JvdXBzLmNvbT6JARwE
11+
EwECAAYFAlSA71YACgkQZDSNpSCiy1ZvywgAppmaJbVnXXzVGFXmYz5DuQqN+xyZ
12+
E6kPKUEcyVUParzzzKc5SAQ8mo1O12TWWU+camXdWkBpBb7E0/lHs//7Q5j+5NHR
13+
G/fTxawoONvEHSTpTmMjm/U6fe3WoMf/0kD3ObOiYgpQ0xm4p5iRDLO+KR0tOlWX
14+
rjh7fCoH7Ix93tOqQFaEPcOADKK/W5GuUnOuEItGKT/pnT2EhnGK3iThMgDjSSh0
15+
pBr5TQ0OMjIJvl1gx7aCELJ2JhW0C6Jh+kX3tDBSgg1tlPjrSdGFb4kwMTH10iMi
16+
Ty2eQFIIk8yG3elSUAAKBHJDOm3m5LTQF6RNjIvfCfQQ1yci26kt3No9cg==
17+
=VhJN
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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

build.sbt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
scalaModuleSettings
22

3-
version := "0.5-SNAPSHOT"
3+
version := "0.5.0-SNAPSHOT"
44

5-
scalaVersion := "2.11.2"
5+
scalaVersion := "2.11.4"
66

7-
snapshotScalaBinaryVersion := "2.11.2"
7+
snapshotScalaBinaryVersion := "2.11.4"
88

99
// dependencies:
1010
libraryDependencies += "org.scala-sbt" % "test-interface" % "1.0"

project/build.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
sbt.version=0.13.6
1+
sbt.version=0.13.7

project/plugins.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
addSbtPlugin("org.scala-lang.modules" % "scala-module-plugin" % "1.0.1")
1+
addSbtPlugin("org.scala-lang.modules" % "scala-module-plugin" % "1.0.2")

sensitive.sbt.enc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
U2FsdGVkX1/Nr9TM9njkdpHM+sRqQB2dkBatJJvahvMcua4WaOCY786sFicN7Kdn
2+
C5171fvvRdz7BuDZd6NFOpZH6AHI46e7vlIKLPy0rb2FqoJwpFBOc8wpEXTC8mjg
3+
bwh51rLzGvptwuv9PlJhuB/0Td6+ycr2jjfVIdytiqXDr9MWvHvYloOW7ZhV44E+
4+
1cgLSsmOgBMpPckw3S8LnhjnPFkzvBOzljCSIm8FneLQezKrZL3aYLBcPjpjixBJ
5+
tKnID0KiFf+0PWvN/tqbDjgK3IrYjSBbt43xjD0ae4aKINNBao/tiApGYPdRnca7
6+
M6KTY8D/JRx/3JLe0nLdcxNrPfahMEfEwF73ERKTJv3jpVRR1MbX7PE+1NZiWAzT
7+
XXqazzB/UNBrpcfLudM6Ag==

0 commit comments

Comments
 (0)