Skip to content
This repository was archived by the owner on Jun 23, 2020. It is now read-only.

Commit e771745

Browse files
committed
Merge pull request #10 from adriaanm/autopublish
Support for tag-driven publishing on Travis.
2 parents a3a5ad1 + bd63fda commit e771745

11 files changed

+148
-7
lines changed

.travis.yml

+11-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
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: "apmuVagS7WgWzg9HeDLCcX4INxazi50qukOfPkvluJjm58RCJsDwaZseXrQGqyPzRKuBnAetJ4NDWbZMRkm6QpTiH8grPwDl6iNUSVivvzOZGl3Iy8LvNxUv6CYoQBG+R7d8dW//1xcoHtT2zYo3dYEFpSelfNMMLADNUKXSQmI="
10+
211
script:
3-
# the concurrentRestrictions should prevent spurious test failures, see https://github.com/spray/spray/pull/233
4-
- sbt ++$TRAVIS_SCALA_VERSION 'set concurrentRestrictions in Global += Tags.limit(Tags.Test, 1)' clean update compile test
5-
# TODO: -Dbuild.publish.user=${SONATYPE_USER} -Dbuild.publish.password=${SONATYPE_PASS} $(bash project/release_on_tag.sh)
12+
- admin/build.sh
613
scala:
7-
- 2.11.0
14+
- 2.11.4
815
jdk:
916
- openjdk6
1017
# - openjdk7

admin/build.sh

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
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+
# the concurrentRestrictions should prevent spurious test failures, see https://github.com/spray/spray/pull/233
20+
sbt ++$TRAVIS_SCALA_VERSION 'set concurrentRestrictions in Global += Tags.limit(Tags.Test, 1)' "$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+
mQENBFSA7OUBCACJr0pqlTj37dACmNdB6i4IzxkJZCj+MdIfxHI0DxIEtFadpSd3
5+
qQgR42jv6AuxuSAEDJgFooRmMyBuNScjYTn/CCE68VVpsE8eVHOOytPJmRR0fmNu
6+
6tDaH/rrYTOGOrPDs9OflkgX9Z53u+dymDCQulP08+VLJxxrzDeYNRtQucrWhMjh
7+
xe6/9riLaUBEzsJXQRmLlUdumdySTjE8y7nJZK79EerzrLaIs0IjRukPRmbICaT8
8+
hJJf2uYvUjNIhHkwkpoFZGYHO/SKhFaJIAN6jjiwDrNglSHzIjOC7Ki8v6oi9P6I
9+
ytmhEJO8Rd0Ui3UF5iNA70Pmaq7xhUniZlk1ABEBAAG0NnNjYWxhLWNvbnRpbnVh
10+
dGlvbnMgPHNjYWxhLWludGVybmFsc0Bnb29nbGVncm91cHMuY29tPokBHAQTAQIA
11+
BgUCVIDs5QAKCRBEBWr9V9a4yv9VB/kBayFLxJROabtv3rXqH0wePlsHXevOH8ny
12+
GcVdZKDUredTJxXZiWIA0AvH+OsHdysNdHdwGm/xMZ6ckCayre4gzWSyfyhc2yUu
13+
WcHm3vt1mlubJC2TpvijbmTWcjjpnHl/kIF1DhsSnhwSi8WpOjVy086MHaXh/g58
14+
7WnOxYqN+9Fob6BxBxbzbi0C3TQHOiu+OxtuJ85N/JZS7GhxgL1T+Rqq3zpt+3AE
15+
b6yCkhxR4fdk1polZA1w7i6rBdObJWOdyGr/EmskrCTo2iW6p/IZoYthQG8HSTmd
16+
UVOAWmPLrQWEekM2lyPi9Mj+wauGQj8Pg1k96Ac56Z5BlFo8dewi
17+
=mUA6
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+
kNbt+JbWL34Hr2tU+c1ONA==

build.sbt

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ lazy val commonSettings = scalaModuleSettings ++ Seq(
88
repoName := "scala-continuations",
99
organization := "org.scala-lang.plugins",
1010
version := "1.0.1-SNAPSHOT",
11-
scalaVersion := "2.11.2",
12-
snapshotScalaBinaryVersion := "2.11.2",
11+
scalaVersion := "2.11.4",
12+
snapshotScalaBinaryVersion := "2.11.4",
1313
scalacOptions ++= Seq(
1414
"-deprecation",
1515
"-feature")

project/build.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
sbt.version=0.13.6
1+
sbt.version=0.13.7

sensitive.sbt.enc

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
U2FsdGVkX1/RzgC9HSTeYRach72pVgDYXGsBVYHXeN/c7MI6pgCepbl2lEPKvsb2
2+
ey3hPnQYiJ12b8Ho9NbjqquqexCwassjtqZvnKzle3fgpUr6F+WAETYOijKSC4Kb
3+
pU9sJCYZMsjx6b7rLJ6selHWsCSMrogLnKRiHCOY1dnS8zRxN9JeGMT7n0BYipqS
4+
y8o1wLkX49DWEF96+6OlypNqjismP+R7K8wZb4TU0tf/7swwzdhJDx+W1fkNFdxD
5+
JdPUyDGBsY0wF61nxLiTBWK3/d/JIjpmsMukIrsKYL2/tatTlTo9SbcDecg59jNq
6+
Gvjq0Bxb9HU9gri5bNpwWsSKH+S4NPVNopNiMdO7TcaD5Ni8ohzyJlx15YR+3kGj
7+
4ypplC04s9iFNfFX3PfGew==

0 commit comments

Comments
 (0)