5.19.2015

Speed Up the Travis CI Build for Scala Projects

Travis CI: Scalaプロジェクトのビルドを高速化させる

 

sbt-assembly で使われていたテクニックを学ぶ。

 

1. コンテナベース・インフラの選択

現時点において、Travis CI におけるビルド環境は以下の3種類。

  • VMベース
  • コンテナベース
  • OS X

sudo に false を明示的に指定すると、コンテナベースのインフラが選択されるようになる。(未指定時はVMベース)
コンテナベースのほうが起動時間の短縮を見込める。

sudo: false

 

2. キャッシュの活用

Travis CI のキャッシュ機能を利用すれば、更新のないライブラリなどのダウンロード処理をスキップできる。

cache: 
  directories: 
    - $HOME/.ivy2/cache 
    - $HOME/.sbt/boot/scala-$TRAVIS_SCALA_VERSION

実際には Amazon S3 に対するダウンロード/アップロードが行われている。
容量にもよるが、ダウンロードで30秒、アップロードで1分程度はどうしてもかかってしまう。

 

3. 不要なキャッシュ更新を避ける

キャッシュに更新がなければ、Amazon S3 へのアップロード処理は省略される。

ビルド実行後に一時的なファイルを削除すれば、このアップロード処理の発生を必要最低限にできるはずだ。
これは before_cache ステージにコマンドを記述することで実現できる。

before_cache:
  - find $HOME/.sbt -name "*.lock" -delete
  - find $HOME/.ivy2 -name "ivydata-*.properties" -delete

これでももし、Travis CI のログに以下のようなメッセージが出ていたら、何か意図しない差分が存在しているということ。

store build cache
changes detected, packing new archive

このように表示されればOK。

store build cache
nothing changed, not updating cache

 

References

0 件のコメント:

コメントを投稿