Matrixとは
複数のjobを実行する機能のこと。
これを利用すると、言語のバージョンや異なる環境でのテストを実行することができる。
実行したい環境を列挙していくと、その組み合わせの分jobが自動的に実行される。
# rvmとgemfile,envの各値を組み合わせた数のjobが実行される。
# 下のだと2x2x2の8jobが実行される。
rvm:
- 2.5
- 2.2
gemfile:
- gemfiles/Gemfile.rails-3.2.x
- gemfiles/Gemfile.rails-3.0.x
env:
- ISOLATED=true
- ISOLATED=false
# matrixを使って、jobの環境を直接指定できる。
# 以下は2つのjobが実行される。
matrix:
include:
- rvm: 2.5
gemfile: gemfiles/Gemfile.rails-3.2.x #値は省略せずに書くこと
env: ISOLATED=true
# - で一つのjob環境になる。
- rvm
gemfile: gemfiles/Gemfile.rails-3.2.x
env: ISOLATED=false
基本的に上のコードの初めのやり方が簡単なのだが、一部の組み合わせは除外したいという場合も出てくる。 そのようなときはmatrix.excludeを使うと除外したい環境を指定できる。
# rvmとgemfile,envの各値を組み合わせた数のjobが実行される。
# 下のだと2x2x2の8jobが実行される。
rvm:
- 2.5
- 2.2
gemfile:
- gemfiles/Gemfile.rails-3.2.x
- gemfiles/Gemfile.rails-3.0.x
env:
- ISOLATED=true
- ISOLATED=false
# 以下、除外したい環境を指定する。
matrix:
exclude:
- rvm: 2.5
gemfile: gemfiles/Gemfile.rails-3.2.x #値は省略せずに書くこと
env: ISOLATED=true
#以下のように書くとrvmが2.5のものはすべて除外される。
matrix:
exclude:
- rvm: 2.5
基本はバージョンや環境を列挙していけばあとはTravis CIがよろしくやってくれる。
matrixは除外したい環境があるときに使うのが、一番やりやすい書き方と思う。
トピック matrix.allow_failures
失敗してもいい組み合わせがあるときはmatrix.allow_failuresを使って指定するといい。
デフォルトだとmatrix.allow_failuresを指定されたjobが失敗しても、その時点では終了とは見なされず、そのjobは最後まで実行され、余計な時間を取ってしまうことになる。
失敗したら可能な限り早く終了したとマークしたいときは、matrix.fast_finishをtrueにするといい。
# rvmとgemfile,envの各値を組み合わせた数のjobが実行される。
# 下のだと2x2x2の8jobが実行される。
rvm:
- 2.5
- 2.2
gemfile:
- gemfiles/Gemfile.rails-3.2.x
- gemfiles/Gemfile.rails-3.0.x
env:
- ISOLATED=true
- ISOLATED=false
# rvmが2.5のものはすべて失敗してもOK
matrix:
fast_finish: true # 失敗したら、可能な限り早くjobが終わったことを告げるためのパラメータ
allow_failures:
- rvm: 2.5
0 件のコメント:
コメントを投稿