diff --git a/.travis.yml b/.travis.yml index 9fef43a..a51b9b8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,15 @@ 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: "KpKvQvUQNsF+o74lndXl+zDGU8+A686ltndldlwDhNiSYF/PJ9RIXembsRh+B4ureo/Aa9UBL7vE6d265DRpir2o6JQ3jcU6e4djfqkvmXuDpBlcd3rJXtKuGYQyE5cm2h3/ZFl+0RmYm+fGSieWBAo+A3uvAVuq8qTu6PY8nMU=" + script: - - sbt ++$TRAVIS_SCALA_VERSION clean update compile + - admin/build.sh scala: - 2.11.0 jdk: diff --git a/admin/build.sh b/admin/build.sh new file mode 100755 index 0000000..af77da9 --- /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" clean update 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..6e1ff9e --- /dev/null +++ b/admin/pubring.asc @@ -0,0 +1,18 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.49 + +mQENBFSA2hsBCADRzxWZY/Wtw2QCjFUW2k1+WxQ71p1C1jDN63xr6Vqc/ivC2wVt +Z91vbZj6LlbKGs5GiSTuLXu/Y08ja3qqcnHGA3VqNQg4UkhqKpWMgsF4vT9JEb5c +ZK0Ise57wmeWxbanhs6YwYbrIIFaBIj+pYJRr0JMbbY2kU0k7qQJv+G+e348ArGJ +ZDgrA6U6OOsKW/k3pbExSlwVAFSHTncopWVyY76LaX03x2WWBdlEu9dxCggNkDni +cPIlq/iRfIV4F1STmfHeCYVKcw3UGlGBnpFAlP74smMNvOUeVo1SNmYMHs2a1GbQ +dt/rKZOEq/HcUjKkdXsCUFCbE/Os1ClHv5mfABEBAAG0MHNjYWxhLXBhcnRlc3Qg +PHNjYWxhLWludGVybmFsc0Bnb29nbGVncm91cHMuY29tPokBHAQTAQIABgUCVIDa +GwAKCRAPjZhgjiZfZMTrB/9NtkRpvG05h3YKyQ1JF6gN1v0pC/zlvyTs99ajSJbi +YskBIGXRQ8W4KNN2rH+fm2Zkz7XVbMrMpsNyons1UL+oX3cOo4UUj9Y9+FNAfq2T +mwDYR1idv0Q2mmkIrAb85ZmwfVILX3IJmd5ilYvzt8asULF4woABYsvPsnK4/SCs +3yZzYcmhxdVZmtgJPVnUsy8WmH/E7dMA3+OG/6pQVmFTvRnQL7CR6pyENdwPU9Dn +xeNbO6Emb54YjrG4nqFZCWQ31hkGk3aMmTHutLnDPgMlQPmXkulPc28Ee6kQmkuA +byQml2Jk2FP8g1CHqVRkmXYNz5y5qmcFCCMqQNx3V8+b +=eHVZ +-----END PGP PUBLIC KEY BLOCK----- diff --git a/admin/secring.asc.enc b/admin/secring.asc.enc new file mode 100644 index 0000000..19c6840 --- /dev/null +++ b/admin/secring.asc.enc @@ -0,0 +1,40 @@ +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 +CvOfwNiH9P1D6Zsbzl/bKA== diff --git a/build.sbt b/build.sbt index 0cc5778..5e7e385 100644 --- a/build.sbt +++ b/build.sbt @@ -4,11 +4,11 @@ scalaModuleSettings name := "scala-partest" -version := "1.0.2-SNAPSHOT" +version := "1.0.3-SNAPSHOT" -scalaVersion := "2.11.0" +scalaVersion := "2.11.4" -scalaXmlVersion := "1.0.1" +scalaXmlVersion := "1.0.3" scalaCheckVersion := "1.11.3" diff --git a/project/build.properties b/project/build.properties index 37b489c..748703f 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=0.13.1 +sbt.version=0.13.7 diff --git a/project/plugins.sbt b/project/plugins.sbt index d59d681..d54207b 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") \ No newline at end of file diff --git a/sensitive.sbt.enc b/sensitive.sbt.enc new file mode 100644 index 0000000..fefe996 --- /dev/null +++ b/sensitive.sbt.enc @@ -0,0 +1,7 @@ +U2FsdGVkX19E4cL16pmP0y3iQKFZZioB1/HTP5omlUx/WW0L1zvvmdeMYEDCC2rJ +3TQGZUZ1W+MLvJMoe7I0Fhm+zfkJK3GHW4KFEfWGE73+i6ZUqox+UFfXZWnkvjje +mSeWQMomh2n5lhgIek+7bgNdg3g2Tnn5ll91P+FKyjFHFSZ8DAzjRL7qwJehDz0m +vkCrwT0HMF35kRK38HE9g4HgHCx/veXkw4EOoWanD4bSv8JyTomBjBFli4S1N4Sl +8bZdh7pbyDH3or+mHYasWEfGTIIszbqnMLlsvMGG2ETfcny1xosiAE8YUaxaVn5I +Xi7QqM1Gp1Bv4yUwSXbGmqU0RSWCkrtYX7uyQeaa3rRUHXsc0HPIHW3W9e0I7QXB ++r5UF+wId3jhZcVwoNQy7g==