bekkou68 の日記

Gogengo! や IT 技術など。

Travis CI で bundle install が毎回走らないようキャッシュする

はじめに

Travis CI で CI のたびに bundle install が毎回走っていました。その時間がテストの時間の大部分を占めていたので短縮したかったのでした。

やりかた

こちらに書いてありました。
.travis.yml に一行追加するだけです(diff 形式)。現在はプライベートリポジトリのみ対応されているようです。

  language: ruby
+ cache: bundler
  rvm:
    - 2.1.0
  ...

これで push なりして CI を動かしてみると bundle install の結果がキャッシュされるようになります。べんり!
7分ほどかかってた CI が 3分ほどになりました。50%の速度改善です!

もちろん差分があったら差分の分だけ install されます。仕組みの説明はこれとかこれに書いてありました。キャッシュの実体は S3 にセキュアに保存されたアーカイブのようです。

もし変なデータをキャッシュするなどして消したくなったら

travis gem を使って消せるようです(参考)。

Gemfile を編集します。

  group :development do
+   gem 'travis', '~> 1.6.8'
  end
$ bundle install

$ bundle exec travis login --pro # ログインが必要 ※A

$ bundle exec travis cache # キャッシュを表示
$ bundle exec travis cache --delete # キャッシュを削除
※A ログインできない場合(2014年06月12日更新)

久しぶりに travis login --pro しようとしたら

$ invalid access token - try running travis login --pro

と表示されました。一度ログアウトすることでログインできました。

$ travis logout --pro

参考: http://eslar.blogspot.jp/2014/05/travis-cli.html

おわりに

快適な Travis CI ライフをお過ごしください。Travis CI べんりだなあ。