トップ «前の日記(2023/02/14 (火) ) 最新 次の日記(2023/02/16 (木) )» 編集 RSS feed

HsbtDiary


2023/02/15 (水) [長年日記]

福岡 Rubyist 会議 03 に登壇します。

もう今週末の開催となってしまいましたが、2/18(土)に福岡で開催される福岡 Rubyist 会議 03 で「Ruby のリリースを爆速にするための方法」というタイトルで登壇します。

もう参加枠が 88/90 と、ギリギリになっていて、参加するか迷っているなら今すぐ登録してくれ!という状態です。Ruby のリリースの裏側の話やこうするともっとリリースサイクルを短くできるのでは?という話をする予定なので、この辺に興味がある方はぜひお越しください。

Ruby の新しいバージョンがリリースされても自動で GitHub Actions の対象とするやつを作った

GitHub Actions の reusing workflow を利用して以下のように書くと、自動的に新しくリリースされた Ruby 3.2 なり、EOL となった 2.6 (2023/4 予定なら 2.7 とか) を除外した上で ruby/setup-ruby が実行される。

name: test

on: [push, pull_request]

jobs:
  ruby-versions:
    uses: ruby/actions/.github/workflows/ruby_versions.yml@master

  test:
    needs: ruby-versions
    name: test with ${{ matrix.ruby }}
    strategy:
      matrix:
        ruby: ${{ fromJson(needs.ruby-versions.outputs.versions) }}
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Set up Ruby
      uses: ruby/setup-ruby@v1
      with:
        ruby-version: ${{ matrix.ruby }}
    - name: Run test
      run: ruby -v

ruby_versions.yml には以下の inputs を with で与えることができる。

  • engine: all, cruby, cruby-jruby, cruby-truffleruby を指定できる。デフォルトは all。
  • min_version: cruby の対象バージョンをどこから始めるかを指定できる。1.9 以降を指定可能。指定しなくても、Actions の実行時点でサポートしている最低バージョンが利用される。
  • versions: 上記以外で特別にバージョンを突っ込みたい時に使う。ここがやや微妙なのだが '["2.3.1"]' などというように、バージョンは double quote, 全体を single quote で囲む必要がある。

動いている様子は https://github.com/ruby/rake/pull/475 を見てください。というのも、ruby/* の下は数十個のライブラリを適当なバージョンで延々とテストしていて、新しいバージョン の Ruby がリリースされるたびに人々が無限に追加してマージするという作業をすることになるので、以前に ruby/setup-ruby で提供される Ruby インタプリタを自動指定するやつを作った) でやったものの、これは追加バージョンを利用側で追加しないとダメなのが微妙だった。

もう追加とか削除は勝手にやってくれよ、というピタゴラで解決しようと考えていたところに reusing workflow が登場したのでガチャガチャやってなんとかものになるものができた。しかしこの GitHub Actions のデバッグというか、動きを把握するのはほんと大変というか不毛感が高いなあ...。

今後、もうちょいインタフェースが変わるかもしれませんが、ライブラリ作者の方などはぜひご利用ください。

羽田空港まで往復

妻が出張から帰ってくるのに合わせて羽田空港まで迎えに行ってきた。夜の首都高というのは空いてるのに合わせて夜景というかネオンがなかなか新鮮でこれはこれで良かった。

やはり 30 分とちょっとで荷物も含めて輸送できるというのは楽な気がする。