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
0 件のコメント:
コメントを投稿