Hiroto's diary

プログラミング関連を書くかも

Travis CIでRubyのテストを高速化する

効果

設定 時間
デフォルト 3~4分
並列化 & キャッシュ 1分

方法

.travis.ymlに以下を追加するだけ

# bundlerのオプションを変更
# 並列で実行する数を4にしてインストールするパスをvendor/bundleに変える
install : bundle install --jobs=4 --path vendor/bundle

# vendor/bundleをキャッシュする
cache:
  directories:
    - vendor/bundle

bundle installを並列で実行する

gemが大量にあったり、ネイティブエクステンションを使ってたりするとビルドが遅くなります。なので並列でインストールして高速化します。

bundle installTravis CIのデフォルトだと3個並列で実行されます。これを4個に増やします。

install : bundle install --jobs=4

gemをキャッシュする

テストを走らせる度に何回もbundle installを繰り返してインストールするのは非常に効率が悪いです。なのでgemをキャッシュして再インストールが必要なgemだけインストールします。

bundlerのオプションをオーバーライドしてインストールするディレクトリを変えます。

install : bundle install --jobs=4 --path vendor/bundle

これでvendor/bundleにgemがインストールされます。が、このままだとvendor/bundleはキャッシュされないので設定を追加します。

cache:
  directories:
    - vendor/bundle

これでキャッシュされる。

© 2015-2017 Hiroto-K