🙆

GitHub Actionsワークフローのアクションを更新するプルリクエストをDependabotで自動で作成する

2024/10/14に公開

概要

GitHub Actionsのワークフローで、公開されているアクションを使用しています。
アクションが更新された場合に、更新に追随するプルリクエストをDependabotで自動で作成します。

yamllintを実行するワークフローを下記の記事で作成したので、それを修正してDependabotの確認をします。
https://zenn.dev/jnxjez/articles/18b9935f66caf5

ファイル構成

% 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を設定します。

https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#scheduleinterval

dependabot.yml
---
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%と表示されていますが、これはほかのパブリックリポジトリでバージョンを更新した際に問題がなかった割合のようです。
https://docs.github.com/en/code-security/dependabot/dependabot-security-updates/about-dependabot-security-updates#about-compatibility-scores

Files changedタブを確認すると、actions/checkoutの行だけが修正されています。
こちらも想定通りの挙動でした。

参考

https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file

Discussion