travic-ci でカスタムのビルドの設定

まえこんな記事書きましたが

Scala でも travis-ci

その後色々試して↓

不安定だったり、sbtのversionが制限あったり、上がったと思ったら古いsbtのversionサポートされなくなったり色々微妙なところもありますが、一応使ってます。

で、
.travis.yml に

language: scala

と書いてあると、デフォルトでは "sbt test" を実行するわけですが、これが実は自由にカスタマイズできることに気づいたので、デフォルトで用意されてるsbt使わずに色々やってみました。
色々試した結果、ビルド時に外部へhttpのアクセスとか特に制限ないみたいですし、基本的なシェルのコマンドはべつになんでも実行できるようなので、sbtのversionで困らないように sbt-extras を travis仮想マシン上で毎回取得するようにしてみたら、普通にうまくいきました(`・ω・´)ノ
これで、sbt0.12でも普通にbuildできますね。


あと、sbt-appengine 使ったプロジェクトもテストしたいなーと思いつつ、appengine の sbt plugin は APPENGINE_SDK_HOME という環境変数が定義されていてなおかつそこに指定のjarなどが存在しないと、そもそもプロジェクトのロード時 *1 にエラーになる・・・(´・ω・`)
というわけで、色々考えてた結果、普通に直にsdkのzipをdownloadしてその場で展開して環境変数setまでやってしまったらうまくいきました↓

https://github.com/xuwei-k/githubtree/commit/b041961f5587b64d9f600fa35b62883175903894
http://travis-ci.org/#!/xuwei-k/githubtree/builds/1633191

これでいいんだろうか・・・?
というわけで、sbtのデフォルトのversionでtestするだけで困らないならいいけれど、ちょっと違うことやるにはカスタマイズして .travis.yml の scriptのところに自分で書いたほうが柔軟性あっていいですね。( g8-test や scripted-testをやる場合も .sbtrcにalias書くのではなくて )

あとちなみに、sbtの起動時のメモリをあまり大きくし過ぎると、sbtというかJVM自体が立ち上がらない*2ので注意しましょう。

またなにかあれば書きます。

*1: appengine用の特殊な処理してる部分が存在しないコードを、コンパイルしたいだけだとしても

*2:4Gとか無理だった・・・