Dependabot を使って GitHub Actions の依存関係を自動更新する
経緯
GitHub Actions の set-env
や add-path
には脆弱性があり2020年11月16日に削除されました。
自分では使っていないので関係ないと思っていたのですが、どうやら呼び出しているアクションの中で使われていることがあるようで古いバージョンを使っているものがエラーになりました。
具体的には twitter-swagger-ui/update-openapi-json.yml で peter-evans/create-pull-request@v2
を使用しており、 v3.5.0
へ上げたらエラーが解消されました。
バージョンを最新に保っておくことはセキュリティはもちろん様々な面で有用です。
自動的にバージョンアップの有無を確認して更新するように設定します。
Dependabot
GitHub には Dependabot という依存関係を自動的に更新する機能があります。
よく Composer や npm 等のパッケージ更新に使われていると思いますが、実は GitHub Actions にも対応しています。
(自動更新と言っても知らないうちにマージされるのは危険なので Pull request で送られてきます。)
設定
バージョンアップデートの有効化と無効化 - GitHub Docs に従って作成します。
.github/dependabot.yml ファイルを直接作成しても良いですし、リポジトリの Insights > Dependency graph > Dependabot > [Enable Dependabot] > [Create config file] をクリックすると雛形を作成してくれます。
version: 2
updates:
- package-ecosystem: 'github-actions'
directory: '/'
schedule:
interval: 'weekly'
更新 Pull request
設定をするとすぐにチェックが走りこのような Pull request が送られてきます。
ワークフローファイルを横断したアクション毎の Pull request になるようです。
メジャーバージョンやブランチを指定している場合はマイナーバージョン指定に変更されるようです。(実際その方が良いでしょう。)
SHA はどれが最新か判断できないのか更新されませんでした。
set-env, add-path の対応方法
余談ではありますが自分で直接使用している場合は修正が必要です。
set-env
は echo "{name}={value}" >> $GITHUB_ENV
へ、
add-path
は echo "{path}" >> $GITHUB_PATH
へ修正します。
Discussion