GitHub Actionsワークフローのアクションを更新するプルリクエストをDependabotで自動で作成する
概要
GitHub Actionsのワークフローで、公開されているアクションを使用しています。
アクションが更新された場合に、更新に追随するプルリクエストをDependabotで自動で作成します。
yamllintを実行するワークフローを下記の記事で作成したので、それを修正してDependabotの確認をします。
ファイル構成
% tree -aFI .git
./
├── .github/
│ ├── dependabot.yml
│ └── workflows/
│ ├── actionlint.yml
│ ├── healthcare-data-registration.yml
│ ├── shellcheck.yml
│ └── yamllint.yml
├── config/
│ ├── .secretlintrc.json
│ └── yamllint_config.yml
├── get_last_time.flux
├── healthcare.csv
├── memo.md
└── update.sh
4 directories, 11 files
以下のファイルを追加・修正しています。
ファイル名 | 追加・修正内容 |
---|---|
dependabot.yml | Dependabotの設定ファイルを追加。 |
yamllint.yml | dependabot.ymlをyamllintの対象に追加。Dependabotの動作確認のためにactions/checkoutをv3にバージョンダウン。 |
各ファイルの説明
dependabot.yml
今回はGitHub Actionsを対象とするのでpackage-ecosystemにはgithub-actionsを指定します。
package-ecosystemにはTerraformを対象とするterraformなども設定できます。
schedule.intervalは月曜日から金曜日に実行されるようにdailyを設定します。
---
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
yamllint.yml
今回追加したdependabot.ymlがdevelopブランチにpushされた際にyamllintのワークフローが起動するように修正しました。
@@ -8,6 +8,7 @@ on: # yamllint disable-line rule:truthy
branches:
- develop
paths:
+ - ".github/dependabot.yml"
- ".github/workflows/*.yml"
- "config/*.yml"
workflow_dispatch:
Dependabotがcheckoutのバージョンが古いことを検出するようにactions/checkoutのバージョンを4から3に変更しています。
また、yamllintの実行対象にdependabot.ymlを追加しました。
@@ -22,7 +23,7 @@ jobs:
timeout-minutes: 10
steps:
- name: Checkout
- uses: actions/checkout@v4
+ uses: actions/checkout@v3
- name: Running yamllint
- run: yamllint -c config/yamllint_config.yml .github/workflows/*.yml config/*.yml
+ run: yamllint -c config/yamllint_config.yml .github/dependabot.yml .github/workflows/*.yml config/*.yml
Dependabotの動作確認
上記で作成・修正したファイルをGitHubのデフォルトブランチにマージすると以下のプルリクエストが自動で作成されました。
想定通りactions/checkoutのバージョンを3から4に更新しようとしてくれています。
compatibilityが94%と表示されていますが、これはほかのパブリックリポジトリでバージョンを更新した際に問題がなかった割合のようです。
Files changedタブを確認すると、actions/checkoutの行だけが修正されています。
こちらも想定通りの挙動でした。
参考
Discussion