akadama

そこらへんにいるプログラマが適当にやってます

Ruby2.1.0以降をTravisCIでテストするには

Ruby2.1.0以降のバージョニングルールの変更されてから初のリリース、Ruby2.1.1が出た いろいろあってTravisCIでの2.1.0以降のテストについて調べた

発端は@sonotsさんのツイート

そして口は災いの元の見本

調べたのは以下の2点

  1. すでに2.1.1と指定できるのか
  2. 2.1.*のようにした場合はどうなるか

2.1.1を指定した場合

  • 2.1.1動いた
  • Travisのコンテナには入ってないバージョンのため取得用のダウンロードが走る(+30secぐらい)

参考: https://travis-ci.org/chiastolite/travis-test/builds/19588293

2.1.*のようにした場合

Travisでは2.1.0が動作した

1
2
3
4
5
6
7
$ curl -sSL https://get.rvm.io | bash -s 1.25.14
$ rvm --version

rvm 1.25.14 (version) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

$ rvm use 2.1.* --install --binary --fuzzy
Using /home/travis/.rvm/gems/ruby-2.1.0

試しにdocker上でrvmを最新ver(1.25.19)して同様に2.1.*を渡してみたところ、この場合は2.1.1で動作した

1
2
3
4
5
6
7
$ curl -sSL https://get.rvm.io | bash -s stable
$ rvm --version

rvm 1.25.19 (version) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

$ rvm use 2.1.* --install --binary --fuzzy
Using /home/travis/.rvm/gems/ruby-2.1.1

これにより、現在のTravisCI上ではrvmのバージョンが古いため、2.1.*が最新にはならないことがわかった

rvmを更新できないかというIssueも上がっていたが現状動作を確認することができていない

Update RVM before selecting Ruby by henrikhodne · Pull Request #139 · travis-ci/travis-build

TravisCI側でコンテナが更新されるのを待つしかなさそう

まとめ

2.1.などの指定ではTravisCIの更新を待つ必要があるが、バージョンを直接指定すればRubyの最新バージョンを追うことができることがわかった ビッグウェーブに乗る必要がある人はリリースの度にバージョンを更新して、それ以外の場合は2.1.などとしてTravis側の対応を待てばいいと思う

(Travisの更新速度がどれぐらいかわからないけど)