【Github Actions】続・Dynamic Matrix を使って常に最新の Ruby バージョンでテストをする試み
2022/06/06
【Github Actions】Dynamic Matrix を使って常に最新の Ruby バージョンでテストをする試み の続き
安定版のバージョンを返すAPI
公式?でAPIが用意された
https://cache.ruby-lang.org/pub/misc/ci_versions/
$ curl https://cache.ruby-lang.org/pub/misc/ci_versions/cruby.json
["2.7","3.0","3.1","head"]
Dynamic Matrix で扱いやすいフォーマットで返されるので、加工なしでそのまま使える
データソースは同じく ruby-builder-versions.json を使っているっぽい
https://github.com/ruby/actions/blob/6d30e4fb0c1a1189be3da336353842873301bd7a/tool/snapshot/update_ci_versions.rb#L9
バージョンを追加する
古いバージョンも使いたい場合はこんな感じ
$ curl -s 'https://cache.ruby-lang.org/pub/misc/ci_versions/cruby.json' | jq -c '. + ["2.6", "2.5", "2.4"]'
["2.7","3.0","3.1","head","2.6","2.5","2.4"]
GitHub Actions のアクション
上記のAPIをラップしたアクションも出来ていた
https://github.com/ybiquitous/dynamic-ruby-versions-action
ruby.yaml
jobs:
ruby-versions:
runs-on: ubuntu-latest
outputs:
versions: ${{ steps.versions.outputs.versions }}
steps:
- id: versions
uses: ybiquitous/dynamic-ruby-versions-action@v1
test:
needs: ruby-versions
runs-on: ubuntu-latest
strategy:
matrix:
ruby: ${{ fromJson(needs.ruby-versions.outputs.versions) }}
steps:
- uses: actions/checkout@v3
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
bundler-cache: true
- run: bundle exec rake
バージョンを追加する
古いバージョンも使いたい場合はこんな感じ
steps:
- id: versions
uses: ybiquitous/dynamic-ruby-versions-action@v1
with:
add: '"2.5", "2.6"'
所感
公式で用意された感じなので、安心して「Dynamic Matrix を使って常に最新の Ruby バージョンでテスト」ができそう
さっそく ruby/net-pop でも使われている(Pull Request #13)
自分が公開している Gem でもガンガン使っていきたい