GitHub Actions の Ruby プロジェクトで use-ruby-action を使う

GitHub Actions で Ruby を使う場合、何も考えなければ GitHub 謹製の setup-ruby を使うと思います。

github.com

しかし、この setup-ruby、驚くことに 2020/01 上旬時点で使用できる Ruby のバージョンが 2.4 - 2.6 となっています。 setup-ruby の状況や、それ以外の選択肢については、以下の記事で詳しく書かれています。

mstshiwasaki.hatenablog.com

今回 jp_prefecture gem のビルドを GitHub Actions に移行するにあたって、 use-ruby-action というサードパーティ製の Action を使って Ruby のバージョンを指定するようにしました。

github.com

jp_prefecture gem の設定は以下にあります。

jp_prefecture/build.yml at 1f93bc05062dca365956257e55404453497c4154 · chocoby/jp_prefecture · GitHub

Ruby に関する指定を抜粋するとこんな感じ。

jobs:
  matrix:
    # 省略
    strategy:
      matrix:
        ruby:
          - 2.3
          - 2.4
          - 2.5
          - 2.6
          - 2.7

    steps:
      # 省略
      - name: Set up Ruby ${{ matrix.ruby }}
        uses: eregon/use-ruby-action@master
        with:
          ruby-version: ${{ matrix.ruby }}

使い勝手としては、Ruby のバージョンを 2.6 と指定できるので便利です。もちろん 2.6.5 と指定することもできます。 2.6 と指定した場合は、2.6 系の最新のパッチバージョンを使用します。プロジェクトに .ruby-version が存在すれば、そこに記述している Ruby を使用してくれます。

しかし、use-ruby-action がサポートしている以外の Ruby を使いたい場合は、手動で Ruby をビルドする必要があります。 例えば、rubicure gem では Ruby の Docker コンテナを指定し、複数バージョンの Ruby でビルドを行うアプローチを取っているようです。

rubicure/test.yml at b71e872082dfcc53530f90f20670fdad11e1d7a7 · sue445/rubicure · GitHub

GitHub Actions は使われはじめたばかりで、use-ruby-action は選択肢の一つなので、今後の setup-ruby に期待です。