CircleCI で sbt 0.13.11 を使用する。


そのうち CircleCI 側で対応してもらえて不要になりそうだけど、備忘のため残す。

2016.06.07 現在、対応されたようなので本記事は不要になった。

build.properties に sbt.version を指定する

新しい Scala プロジェクトの作成にあたり、現在の最新バージョン sbt 0.13.11 を使用する事にした。
いつも通り project/build.properties に sbt.version=0.13.11 を指定すればOK、と思っていたが… CircleCI でのテスト実行に失敗する。

Detected sbt version 0.13.11
Cannot find sbt launcher 0.13.11
Please download: 
  From  http://typesafe.artifactoryonline.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/0.13.11/sbt-launch.jar

To /home/ubuntu/.sbt/.lib/0.13.11/sbt-launch.jar sbt test returned exit code 1

このように使用するsbtのバージョンを project/build.properties に指定したものとして認識してくれているようだが、そのバージョンの sbt が見つからないと言われている模様。

CircleCI公式ドキュメントTest environmentを見てみても、現時点では 0.13.9 までしか無い。

We track http://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/ for recent Scala releases:

との事だが、http://dl.bintray.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/ にも 0.13.9 までしか無い。
(2016.03.10 追記参照)

sbt公式ドキュメントInstalling sbt manuallyを見たところ、URLは https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/0.13.11/sbt-launch.jar のようなのでこちらをダウンロードすればよさそう。

CircleCI テスト実行前に sbt-launch.jar をダウンロードする

  • curl -o ~/.sbt/.lib/0.13.11/sbt-launch.jar https://.../0.13.11/sbt-launch.jar
    を実行すればいいだろう
    → 保存先のディレクトリがなくてダメでした。

  • mkdir -p ~/.sbt/.lib/0.13.11/ してから curl -o ~/.sbt/.lib/0.13.11/sbt-launch.jar https://.../0.13.11/sbt-launch.jar すればいいだろう。
    → リダイレクト先まで見てくれてなくてダメでした。(2016.03.10 追記参照)

と、何度か試行錯誤して、最終的にこのようにしてCIビルドの成功が確認できた。

circle.yml
machine:
  java:
    version: oraclejdk8
dependencies:
  pre:
    - mkdir -p ~/.sbt/.lib/0.13.11/
    - curl -L -o ~/.sbt/.lib/0.13.11/sbt-launch.jar https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/0.13.11/sbt-launch.jar
  cache_directories:
    - ~/.sbt

2016.03.10 追記

何か sbt-launch.jar のダウンロードURLについて色々勘違いしていたけど、 https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/https://dl.bintray.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/ にリダイレクトされているので、CircleCI公式ドキュメントと実際のダウンロードURLに齟齬があるわけではなかった。