notebook

都内でWEB系エンジニアやってます。

GitHub Actionsで使用するRubyやNodeのバージョンをRenovateで更新可能にする

GitHub Actionsのruby/setup-rubyactions/setup-nodeなどで使う言語のバージョン指定をRenovateで随時更新できるようにする

自分はRuby, Nodeを使うことが多いので掲題の2つしか試していないが他の言語の~~envでもRenovateが対応していれば流用可能

node-versionなどのenv系のバージョン更新

Renovateはデフォルトで(特別な設定を必要とせず).ruby-versionの値や.node-versionなどのファイルを見つけて、更新がある場合はPRを作成してくれる

Managers - Renovate Docs

Automated Dependency Updates for Ruby Version - Renovate Docs

Automated Dependency Updates for Nodenv - Renovate Docs | Renovate Docs

GitHub Actionsでのsetup-nodeなどのバージョン指定

掲題の話だが、できないなーと思ってたけどちょっと工夫すれば実現できる

Renovate doesn't update NodeJS version used by GitHub actions · Issue #7716 · renovatebot/renovate

上記issueに答えが載っていて

  • Renovateでは.ruby-version,.node-verisonなどのバージョンをデフォルトでウォッチ対象にできる
  • GitHub Actionsの設定内でこの.ruby-version,.node-verisonの内容を読み込んでsetup-ruby,setup-nodeのアクションに引数として渡す

そうすることで、実質Actionsの設定ファイル上の言語のバージョンの自動アップデートが実現できる

  • 設定例
jobs:
  job1:
    runs-on: ubuntu-latest
    name: search tweet
    steps:
      - uses: actions/checkout@v3
      - name: Read Ruby version from .ruby-version
        run: echo "ruby_version=$(cat .ruby-version)" >> $GITHUB_OUTPUT
        id: ruby-version
      - uses: ruby/setup-ruby@v1.106.0
        with:
          ruby-version: ${{ steps.ruby-version.outputs.ruby_version }}

コードのcheckout後に$GITHUB_OUTPUTへ現在の.ruby-versionの値を出力しRubyのバージョンを後続のステップで参照できるようにする

setup-rubyで使用するRubyのバージョンを指定

という流れになる

おわり

設定ファイルにバージョンベタ書きだとファイルが増えるほど更新が面倒なのでこういう方法で一括管理できるのは楽で良いですね