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

Support for tag-driven publishing on Travis. #8

Merged
merged 3 commits into from
Dec 4, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
language: scala

env:
global:
- PUBLISH_JDK=openjdk6 # admin/build.sh only publishes when running on this jdk
# Don't commit sensitive files, instead commit a version encrypted with $SECRET,
# this environment variable is encrypted with this repo's private key and stored below:
# (See http://docs.travis-ci.com/user/environment-variables/#Secure-Variables.)
- secure: "L51aaOUw+VZQB6XW4e3MrediaFx8hH876sSXUkEDyoYpWo+xYOBS5xj9zlTAuIDFunbsetk9CX1q22nYdfQjhlb49bxm9WyOsZp1ZmoEmWUG3NoEAZVu0dWt9Gtn1Qz3xiBiS5kzpWMEviBH/DyE1Go2BateUpzs2CfGW8eG0ss="

script:
- sbt ++$TRAVIS_SCALA_VERSION compile
- admin/build.sh

scala:
- 2.11.2
jdk:
Expand Down
19 changes: 19 additions & 0 deletions admin/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/bash

# prep environment for publish to sonatype staging if the HEAD commit is tagged

# git on travis does not fetch tags, but we have TRAVIS_TAG
# headTag=$(git describe --exact-match ||:)

if [ "$TRAVIS_JDK_VERSION" == "$PUBLISH_JDK" ] && [[ "$TRAVIS_TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z0-9-]+)? ]]; then
echo "Going to release from tag $TRAVIS_TAG!"
myVer=$(echo $TRAVIS_TAG | sed -e s/^v//)
publishVersion='set every version := "'$myVer'"'
extraTarget="publish-signed"

cat admin/gpg.sbt >> project/plugins.sbt
admin/decrypt.sh sensitive.sbt
(cd admin/ && ./decrypt.sh secring.asc)
fi

sbt ++$TRAVIS_SCALA_VERSION "$publishVersion" compile $extraTarget
2 changes: 2 additions & 0 deletions admin/decrypt.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#!/bin/bash
openssl aes-256-cbc -pass "pass:$SECRET" -in $1.enc -out $1 -d -a
2 changes: 2 additions & 0 deletions admin/encrypt.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#!/bin/bash
openssl aes-256-cbc -pass "pass:$SECRET" -in $1 -out $1.enc -a
19 changes: 19 additions & 0 deletions admin/encryptAll.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/bash

# Based on https://gist.github.com/kzap/5819745:

echo "This will encrypt the cleartext sensitive.sbt and admin/secring.asc, while making the encrypted versions available for decryption on Travis."
echo "Update your .travis.yml as directed, and delete the cleartext versions."
echo "Press enter to continue."
read

# 1. create a secret, put it in an environment variable while encrypting files -- UNSET IT AFTER
export SECRET=$(cat /dev/urandom | head -c 10000 | openssl sha1)

# 2. add the "secure: ..." line under the env section -- generate it with `` (install the travis gem first)
travis encrypt SECRET=$SECRET

admin/encrypt.sh admin/secring.asc
admin/encrypt.sh sensitive.sbt

echo "Remember to rm sensitive.sbt admin/secring.asc -- once you do, they cannot be recovered (except on Travis)!"
26 changes: 26 additions & 0 deletions admin/gpg.sbt
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@

addSbtPlugin("com.typesafe.sbt" % "sbt-pgp" % "0.8.3") // only added when publishing:

// There's a companion sensitive.sbt, which was created like this:
//
// 1. in an sbt shell that has the sbt-pgp plugin, create pgp key in admin/:
//
// sbt
// set pgpReadOnly := false
// set pgpPublicRing := file("admin/pubring.asc")
// set pgpSecretRing := file("admin/secring.asc")
// pgp-cmd gen-key // use $passPhrase
// Please enter the name associated with the key: $repoName
// Please enter the email associated with the key: [email protected]
// Please enter the passphrase for the key: $passphrase
//
// 2. create sensitive.sbt with contents:
//
// pgpPassphrase := Some($passPhrase.toArray)
//
// pgpPublicRing := file("admin/pubring.asc")
//
// pgpSecretRing := file("admin/secring.asc")
//
// credentials += Credentials("Sonatype Nexus Repository Manager", "oss.sonatype.org", $sonaUser, $sonaPass)

18 changes: 18 additions & 0 deletions admin/pubring.asc
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: BCPG v1.49

mQENBFSA71YBCAC1XINswc+5P1WsKqpbaQRtKa4JHrOXzqAmYtFERAapIDxnkeR1
A+JbdnZluqlAp3rpho+7LGP8Cf39u1YS2/OKrp9ZXpCPef/wJMUvgUP4ISxmUSCu
+3ZdXqA03IyeJfT82n1QmFbFEHXIfmW9yi22ObF4L1TG0o5IC85rQ3o0CEda75jH
Q+jn2bGp5xTo1vyjqDaGHQtBk1CzQXObOVbWTr9R2V+Z7VEXiIqWuywgjOqn23x8
jDjy3N6dyWIkafHukyEurFsGUiXYoiJCOOYXaQbkgOCIOtgcRikLtExPgqjbIwwj
P7c5s8XvPVskjDN6myMNC+ABsj1vkYItwG7RABEBAAG0OnNjYWxhLXBhcnRlc3Qt
aW50ZXJmYWNlIDxzY2FsYS1pbnRlcm5hbHNAZ29vZ2xlZ3JvdXBzLmNvbT6JARwE
EwECAAYFAlSA71YACgkQZDSNpSCiy1ZvywgAppmaJbVnXXzVGFXmYz5DuQqN+xyZ
E6kPKUEcyVUParzzzKc5SAQ8mo1O12TWWU+camXdWkBpBb7E0/lHs//7Q5j+5NHR
G/fTxawoONvEHSTpTmMjm/U6fe3WoMf/0kD3ObOiYgpQ0xm4p5iRDLO+KR0tOlWX
rjh7fCoH7Ix93tOqQFaEPcOADKK/W5GuUnOuEItGKT/pnT2EhnGK3iThMgDjSSh0
pBr5TQ0OMjIJvl1gx7aCELJ2JhW0C6Jh+kX3tDBSgg1tlPjrSdGFb4kwMTH10iMi
Ty2eQFIIk8yG3elSUAAKBHJDOm3m5LTQF6RNjIvfCfQQ1yci26kt3No9cg==
=VhJN
-----END PGP PUBLIC KEY BLOCK-----
40 changes: 40 additions & 0 deletions admin/secring.asc.enc
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
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
6 changes: 3 additions & 3 deletions build.sbt
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
scalaModuleSettings

version := "0.5-SNAPSHOT"
version := "0.5.0-SNAPSHOT"

scalaVersion := "2.11.2"
scalaVersion := "2.11.4"

snapshotScalaBinaryVersion := "2.11.2"
snapshotScalaBinaryVersion := "2.11.4"

// dependencies:
libraryDependencies += "org.scala-sbt" % "test-interface" % "1.0"
Expand Down
2 changes: 1 addition & 1 deletion project/build.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
sbt.version=0.13.6
sbt.version=0.13.7
2 changes: 1 addition & 1 deletion project/plugins.sbt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
addSbtPlugin("org.scala-lang.modules" % "scala-module-plugin" % "1.0.1")
addSbtPlugin("org.scala-lang.modules" % "scala-module-plugin" % "1.0.2")
7 changes: 7 additions & 0 deletions sensitive.sbt.enc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
U2FsdGVkX1/Nr9TM9njkdpHM+sRqQB2dkBatJJvahvMcua4WaOCY786sFicN7Kdn
C5171fvvRdz7BuDZd6NFOpZH6AHI46e7vlIKLPy0rb2FqoJwpFBOc8wpEXTC8mjg
bwh51rLzGvptwuv9PlJhuB/0Td6+ycr2jjfVIdytiqXDr9MWvHvYloOW7ZhV44E+
1cgLSsmOgBMpPckw3S8LnhjnPFkzvBOzljCSIm8FneLQezKrZL3aYLBcPjpjixBJ
tKnID0KiFf+0PWvN/tqbDjgK3IrYjSBbt43xjD0ae4aKINNBao/tiApGYPdRnca7
M6KTY8D/JRx/3JLe0nLdcxNrPfahMEfEwF73ERKTJv3jpVRR1MbX7PE+1NZiWAzT
XXqazzB/UNBrpcfLudM6Ag==