diff --git a/.travis.yml b/.travis.yml index 0af0a7c..8812d26 100644 --- a/.travis.yml +++ b/.travis.yml @@ -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: diff --git a/admin/build.sh b/admin/build.sh new file mode 100755 index 0000000..9cd380e --- /dev/null +++ b/admin/build.sh @@ -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 \ No newline at end of file diff --git a/admin/decrypt.sh b/admin/decrypt.sh new file mode 100755 index 0000000..3c3c602 --- /dev/null +++ b/admin/decrypt.sh @@ -0,0 +1,2 @@ +#!/bin/bash +openssl aes-256-cbc -pass "pass:$SECRET" -in $1.enc -out $1 -d -a \ No newline at end of file diff --git a/admin/encrypt.sh b/admin/encrypt.sh new file mode 100755 index 0000000..4bf6c93 --- /dev/null +++ b/admin/encrypt.sh @@ -0,0 +1,2 @@ +#!/bin/bash +openssl aes-256-cbc -pass "pass:$SECRET" -in $1 -out $1.enc -a \ No newline at end of file diff --git a/admin/encryptAll.sh b/admin/encryptAll.sh new file mode 100755 index 0000000..de7016b --- /dev/null +++ b/admin/encryptAll.sh @@ -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)!" \ No newline at end of file diff --git a/admin/gpg.sbt b/admin/gpg.sbt new file mode 100644 index 0000000..01157e6 --- /dev/null +++ b/admin/gpg.sbt @@ -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: scala-internals@googlegroups.com +// 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) + diff --git a/admin/pubring.asc b/admin/pubring.asc new file mode 100644 index 0000000..a71aad8 --- /dev/null +++ b/admin/pubring.asc @@ -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----- diff --git a/admin/secring.asc.enc b/admin/secring.asc.enc new file mode 100644 index 0000000..f28f79e --- /dev/null +++ b/admin/secring.asc.enc @@ -0,0 +1,40 @@ +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 diff --git a/build.sbt b/build.sbt index 22b0412..893fe27 100644 --- a/build.sbt +++ b/build.sbt @@ -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" diff --git a/project/build.properties b/project/build.properties index 64abd37..748703f 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=0.13.6 +sbt.version=0.13.7 diff --git a/project/plugins.sbt b/project/plugins.sbt index d59d681..f6b55f8 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1 +1 @@ -addSbtPlugin("org.scala-lang.modules" % "scala-module-plugin" % "1.0.1") \ No newline at end of file +addSbtPlugin("org.scala-lang.modules" % "scala-module-plugin" % "1.0.2") diff --git a/sensitive.sbt.enc b/sensitive.sbt.enc new file mode 100644 index 0000000..91485cb --- /dev/null +++ b/sensitive.sbt.enc @@ -0,0 +1,7 @@ +U2FsdGVkX1/Nr9TM9njkdpHM+sRqQB2dkBatJJvahvMcua4WaOCY786sFicN7Kdn +C5171fvvRdz7BuDZd6NFOpZH6AHI46e7vlIKLPy0rb2FqoJwpFBOc8wpEXTC8mjg +bwh51rLzGvptwuv9PlJhuB/0Td6+ycr2jjfVIdytiqXDr9MWvHvYloOW7ZhV44E+ +1cgLSsmOgBMpPckw3S8LnhjnPFkzvBOzljCSIm8FneLQezKrZL3aYLBcPjpjixBJ +tKnID0KiFf+0PWvN/tqbDjgK3IrYjSBbt43xjD0ae4aKINNBao/tiApGYPdRnca7 +M6KTY8D/JRx/3JLe0nLdcxNrPfahMEfEwF73ERKTJv3jpVRR1MbX7PE+1NZiWAzT +XXqazzB/UNBrpcfLudM6Ag==