-
Notifications
You must be signed in to change notification settings - Fork 92
No longer use scalaVersionsByJvm
#223
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -12,8 +12,6 @@ | |
*.jar | ||
*~ | ||
|
||
build.properties | ||
|
||
# target directories for ant build | ||
/build/ | ||
/dists/ | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,20 @@ | ||
# opt-in to Travis's newer/faster container-based infrastructure | ||
sudo: false | ||
|
||
language: scala | ||
|
||
addons: | ||
apt: | ||
packages: | ||
- openjdk-6-jdk | ||
|
||
jdk: | ||
- openjdk6 | ||
- oraclejdk8 | ||
- oraclejdk9 | ||
|
||
scala: | ||
- 2.11.12 | ||
- 2.12.6 | ||
- 2.13.0-M3 | ||
|
||
env: | ||
global: | ||
# PGP_PASSPHRASE | ||
|
@@ -11,18 +23,23 @@ env: | |
- secure: "OpBwPc1GNvauageYOH3RscAa7wpZxgpmqDz15aigIKLNWzAhAtVUx0MleZ8rQeoqml6nrAvlnzuVHjKL2lVcjMPpjUis7bcQ5UAGK7tZK8x+qZNQxXmpXu8+pENwQA2yFaqt/xy7K5jFOrHJHTRxcPnyVG1yKakPWz53PPYUwbc=" | ||
# SONA_PASS | ||
- secure: "Xw7rI/qlML1nD2e2XwlakkhKAWNGZKqqE+Q3ntTvFpfHryl7KLCvVzJ4LIavnL6kGJaWOgy9vlSoEWn5g9nqHSfE31C/k5pY5nTMAKiwiJzfAS+r0asKXW2gmKhwtcTBkqyLVOZLCJSPVlFRQyfBJHY+Fs0L3KWcnMQgtBlyDhU=" | ||
matrix: | ||
- SCALAJS_VERSION= | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What's the significance of an empty There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In this case it builds for the JVM. If On travis, every combination of the biuld matrix has its own "job", see https://travis-ci.org/scala/scala-xml/builds/381095011 for example. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Tricky. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Here is where the idea comes from: https://github.com/scala/scala-collection-compat/pull/20/files There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ok, we'll blame the code smell on @SethTisue, then. :-) |
||
- SCALAJS_VERSION=0.6.23 | ||
- SCALAJS_VERSION=1.0.0-M3 | ||
|
||
script: admin/build.sh | ||
|
||
addons: | ||
apt: | ||
packages: | ||
- openjdk-6-jdk | ||
matrix: | ||
exclude: | ||
- scala: 2.13.0-M3 | ||
env: SCALAJS_VERSION=1.0.0-M3 | ||
- jdk: oraclejdk9 | ||
env: SCALAJS_VERSION=1.0.0-M3 | ||
- scala: 2.12.6 | ||
jdk: openjdk6 | ||
- scala: 2.13.0-M3 | ||
jdk: openjdk6 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There are 19 builds at the moment. Do we really need all of them? Trimming down would be nice, because the wall time used to be 10 minutes for 3 concurrent builds. The individuals builds are shorter, but now it looks like it takes over 20 minutes because Travis throttles only to 4 or 5 concurrent builds. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think it's not wrong to test them. Maybe we could skip combinations that contain two preview versions: Scala-js 1.0.0-M3 & openjdk9. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah, sounds like a good start. I'm thinking ahead to #110 when things will really go downhill. |
||
|
||
jdk: | ||
- openjdk6 | ||
- oraclejdk8 | ||
- oraclejdk9 | ||
script: admin/build.sh | ||
|
||
notifications: | ||
email: [email protected] | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,33 +1,35 @@ | ||
## Tag Driven Releasing | ||
|
||
### Background Reading | ||
|
||
- http://docs.travis-ci.com/user/environment-variables/ | ||
- http://docs.travis-ci.com/user/encryption-keys/ | ||
- http://docs.travis-ci.com/user/encrypting-files/ | ||
|
||
### Initial setup for the repository | ||
|
||
To configure tag driven releases from Travis CI. | ||
|
||
1. Generate a key pair for this repository with `./admin/genKeyPair.sh`. | ||
Edit `.travis.yml` and `admin/build.sh` as prompted. | ||
1. Publish the public key to https://pgp.mit.edu | ||
1. Store other secrets as encrypted environment variables with `admin/encryptEnvVars.sh`. | ||
1. Store other secrets as encrypted environment variables with `./admin/encryptEnvVars.sh`. | ||
Edit `.travis.yml` as prompted. | ||
1. Edit `.travis.yml` to use `./admin/build.sh` as the build script, | ||
and edit that script to use the tasks required for this project. | ||
1. Edit `build.sbt`'s `scalaVersionsByJvm in ThisBuild` to select Scala and JVM version | ||
combinations that will be used for publishing. | ||
Ensure that `RELEASE_COMBO` is `true` for build matrix combinations | ||
that should be released to sonatype (when building a tag). | ||
|
||
It is important to add comments in `.travis.yml` to identify the name | ||
of each environment variable encoded in a `:secure` section. | ||
of each environment variable encoded in a `secure` section. | ||
|
||
After these steps, your `.travis.yml` should contain config of the form: | ||
|
||
``` | ||
language: scala | ||
|
||
jdk: | ||
- openjdk6 | ||
- oraclejdk8 | ||
|
||
scala: | ||
- 2.11.12 | ||
- 2.12.6 | ||
|
||
env: | ||
global: | ||
# PGP_PASSPHRASE | ||
|
@@ -39,10 +41,6 @@ env: | |
|
||
script: admin/build.sh | ||
|
||
jdk: | ||
- openjdk6 | ||
- oraclejdk8 | ||
|
||
notifications: | ||
email: | ||
- [email protected] | ||
|
@@ -62,10 +60,9 @@ without generating a new key. | |
1. Create a GitHub "Release" with a corresponding tag (e.g., `v0.1.1`) via the GitHub | ||
web interface. | ||
1. The release will be published using the Scala and JVM version combinations specified | ||
in `scalaVersionsByJvm` in `build.sbt`. | ||
- If you need to release against a different Scala version, include the Scala version | ||
and the JVM version to use in the tag name, separated by `#`s (e.g., `v0.1.1#2.13.0-M1#8`). | ||
Note that the JVM version needs to be listed in `.travis.yml` for the build to run. | ||
in the travis build matrix where `[ "$RELEASE_COMBO" = "true" ]`. | ||
- If you need to release against a different Scala version, create a new commit that modifies | ||
`.travis.yml` and push a new tag, e.g., `v1.2.3#2.13.0-M5`. The suffix after `#` is ignored. | ||
1. Travis CI will schedule a build for this release. Review the build logs. | ||
1. Log into https://oss.sonatype.org/ and identify the staging repository. | ||
1. Sanity check its contents. | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,45 +9,44 @@ set -e | |
# Checking the local git clone would not work because git on travis does not fetch tags. | ||
|
||
# The version number to be published is extracted from the tag, e.g., v1.2.3 publishes | ||
# version 1.2.3 using all Scala versions in build.sbt's `crossScalaVersions`. | ||
# version 1.2.3 on all combinations of the travis matrix where `[ "$RELEASE_COMBO" = "true" ]`. | ||
|
||
# When a new, binary incompatible Scala version becomes available, a previously released version | ||
# can be released using that new Scala version by creating a new tag containing the Scala and the | ||
# JVM version after hashes, e.g., v1.2.3#2.13.0-M1#8. The JVM version needs to be listed in | ||
# `.travis.yml`, otherwise the required build doesn't run. | ||
# In order to build a previously released version against a new (binary incompatible) Scala release, | ||
# a new commit that modifies (and prunes) the Scala versions in .travis.yml needs to be added on top | ||
# of the existing tag. Then a new tag can be created for that commit, e.g., `v1.2.3#2.13.0-M5`. | ||
# Everything after the `#` in the tag name is ignored. | ||
|
||
if [[ "$TRAVIS_JDK_VERSION" == "openjdk6" && "$TRAVIS_SCALA_VERSION" =~ 2\.11\..* || "$TRAVIS_JDK_VERSION" == "oraclejdk8" && "$TRAVIS_SCALA_VERSION" =~ 2\.1[23]\..* ]]; then | ||
RELEASE_COMBO=true; | ||
fi | ||
|
||
if [ "$SCALAJS_VERSION" = "" ]; then | ||
projectPrefix="xml" | ||
else | ||
projectPrefix="xmlJS" | ||
fi | ||
|
||
verPat="[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z0-9-]+)?" | ||
tagPat="^v$verPat(#$verPat#[0-9]+)?$" | ||
tagPat="^v$verPat(#.*)?$" | ||
|
||
if [[ "$TRAVIS_TAG" =~ $tagPat ]]; then | ||
currentJvmVer=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}' | sed 's/^1\.//' | sed 's/[^0-9].*//') | ||
|
||
tagVer=$(echo $TRAVIS_TAG | sed s/#.*// | sed s/^v//) | ||
publishVersion='set every version := "'$tagVer'"' | ||
|
||
scalaAndJvmVer=$(echo $TRAVIS_TAG | sed s/[^#]*// | sed s/^#//) | ||
if [ "$scalaAndJvmVer" != "" ]; then | ||
scalaVer=$(echo $scalaAndJvmVer | sed s/#.*//) | ||
jvmVer=$(echo $scalaAndJvmVer | sed s/[^#]*// | sed s/^#//) | ||
if [ "$jvmVer" != "$currentJvmVer" ]; then | ||
echo "Not publishing $TRAVIS_TAG on Java version $currentJvmVer." | ||
exit 0 | ||
fi | ||
publishScalaVersion='set every ScalaModulePlugin.scalaVersionsByJvm := Map('$jvmVer' -> List("'$scalaVer'" -> true))' | ||
echo "Releasing $tagVer using Scala $scalaVer on Java version $jvmVer." | ||
else | ||
echo "Releasing $tagVer on Java version $currentJvmVer according to 'scalaVersionsByJvm' in build.sbt." | ||
fi | ||
if [ "$RELEASE_COMBO" = "true" ]; then | ||
currentJvmVer=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}' | sed 's/^1\.//' | sed 's/[^0-9].*//') | ||
echo "Releasing $tagVer with Scala $TRAVIS_SCALA_VERSION on Java version $currentJvmVer." | ||
|
||
extraTarget="+publish-signed" | ||
cat admin/gpg.sbt >> project/plugins.sbt | ||
cp admin/publish-settings.sbt . | ||
publishTask="$projectPrefix/publish-signed" | ||
|
||
# Copied from the output of genKeyPair.sh | ||
K=$encrypted_6b8d67feaab7_key | ||
IV=$encrypted_6b8d67feaab7_iv | ||
cat admin/gpg.sbt >> project/plugins.sbt | ||
cp admin/publish-settings.sbt . | ||
|
||
openssl aes-256-cbc -K $K -iv $IV -in admin/secring.asc.enc -out admin/secring.asc -d | ||
# Copied from the output of genKeyPair.sh | ||
K=$encrypted_6b8d67feaab7_key | ||
IV=$encrypted_6b8d67feaab7_iv | ||
openssl aes-256-cbc -K $K -iv $IV -in admin/secring.asc.enc -out admin/secring.asc -d | ||
fi | ||
fi | ||
|
||
sbt "$publishVersion" "$publishScalaVersion" clean update +test +publishLocal $extraTarget | ||
sbt "++$TRAVIS_SCALA_VERSION" "$publishVersion" "$projectPrefix/clean" "$projectPrefix/test" "$projectPrefix/publishLocal" "$publishTask" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Sorry to see the I don't know if But these are nits. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Sure, I like the timestamp and success of each task I guess. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,8 @@ | ||
def env(key: String) = Option(System.getenv(key)).getOrElse("") | ||
|
||
pgpPassphrase := Some(env("PGP_PASSPHRASE").toArray) | ||
|
||
pgpPublicRing := file("admin/pubring.asc") | ||
|
||
pgpSecretRing := file("admin/secring.asc") | ||
|
||
credentials += Credentials("Sonatype Nexus Repository Manager", "oss.sonatype.org", env("SONA_USER"), env("SONA_PASS")) | ||
inThisBuild(Seq( | ||
pgpPassphrase := Some(env("PGP_PASSPHRASE").toArray), | ||
pgpPublicRing := file("admin/pubring.asc"), | ||
pgpSecretRing := file("admin/secring.asc"), | ||
credentials += Credentials("Sonatype Nexus Repository Manager", "oss.sonatype.org", env("SONA_USER"), env("SONA_PASS")) | ||
)) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,10 +1,13 @@ | ||
addSbtPlugin("org.scala-lang.modules" % "sbt-scala-module" % "1.0.14") | ||
|
||
if (System.getProperty("java.version").startsWith("1.")) | ||
Seq() | ||
else | ||
// override to version that works on Java 9, | ||
// see https://github.com/scala/sbt-scala-module/issues/35 | ||
Seq(addSbtPlugin("com.typesafe.sbt" % "sbt-osgi" % "0.9.3")) | ||
|
||
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.22") | ||
val scalaJSVersion = | ||
Option(System.getenv("SCALAJS_VERSION")).filter(_.nonEmpty).getOrElse("0.6.23") | ||
|
||
addSbtPlugin("org.scala-js" % "sbt-scalajs" % scalaJSVersion) | ||
addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "0.4.0") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What's this about?
Why doesn't the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
addSbtPlugin("org.scala-lang.modules" % "sbt-scala-module" % "1.0.14") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wonder if we should switch to Travis's newer Ubuntu precise infrastructure?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd stick with the defaults unless there's a good reason not to, but I also don't have a strong opinion. Either way is fine with me.