背景
社内で利用している共通gemがあり、今まではCircleCIによってrspecを回していた。
その際最新のRubyバージョンでのみCIを回すようにしていたのでコード修正やライブラリの更新などで不意に古いバージョンのRubyで動かなくなるのではという懸念があった。
(今の所利用しているシステムが少ないからなんとかなっているが今後増える可能性があるのでバージョン上げると動かなくなるという話がまぁまぁきそう)
目指すところ
複数のRubyバージョンでrspecを回すことで古いRubyでも問題なく動作することを継続的に確認し、安全にgemのバージョンアップを行う地盤を作る。
ついでに github action に載せ替える
小さいながらもOSS的な観点を持って開発をする(古いバージョンへ配慮したコードの書き方etc)
=> ゆくゆくはOSSにしてもいいかなという気もしている
結果
github actionをつかうと簡単にできました
.github/workflows/rspec.yml
name: rspec
on:
- push
jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
ruby-version: ['head', '3.1', '3.0', '2.7', '2.6', '2.5']
steps:
- uses: actions/checkout@v2
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby-version }}
bundler-cache: true
- run: bundle exec rspec
ポイント
- matrix でruby-versionを複数設定することで複数のケースでCIを回す
-
ruby/setup-ruby@v1
のruby-version
で${{ matrix.ruby-version }}
を指定することで実行するRubyのバージョンを変える
参考