2019年1月22日火曜日

Travis CIのMatrixについて

Travis CIについて簡単に調べたので、その中のmatrixについてメモ

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 件のコメント:

コメントを投稿