はじめに
git-auto-commit-action という github action があります
レポジトリの説明を引用すると
A GitHub Action to detect changed files during a Workflow run and to commit and push them back to the GitHub repository. By default, the commit is made in the name of "GitHub Actions" and co-authored by the user that made the last commit.
とのことで、要するに Github Action のなかで加えられたファイルの変更を検知して、それを実際にレポジトリに commit & push してくれる action です。
どのように使うかというと、例えば npm run format
などと合わせて、以下のような Actions を定義すると Github Action のなかで npm run format
を実行し、結果をそのままブランチにプッシュしてくれます。
- name: Run format
run: npm run format
- uses: stefanzweifel/git-auto-commit-action@v3.0.0
with:
commit_message: Format by GitHub Actions
今回遭遇した問題
通常であれば上記のような記述だけで問題なく実行できるのですが、今回私が .github/workflows
配下の deploy.yml
に変更を加えたとき、問題が起こりました。
[main 9a01a11] Format by GitHub Actions
Author: kromiii <kromiii@users.noreply.github.com>
1 file changed, 1 insertion(+), 1 deletion(-)
To https://github.com/kromiii/astro-notion-blog
! [remote rejected] main -> main (refusing to allow a GitHub App to create or update workflow `.github/workflows/deploy.yml` without `workflows` permission)
error: failed to push some refs to 'https://github.com/kromiii/astro-notion-blog'
##[debug]Docker Action run completed with exit code 1
##[debug]Finishing: Run stefanzweifel/git-auto-commit-action@v3.0.0
npm run format
により、GithubAction のなかで deploy.yml
に変更が加えられたのですが、その変更を push しようとした時に権限がないとエラーになってしまっているようでした。
最初は Github Workflow の権限が足りないのではないか?と疑って色々設定を見たのですが、どうも権限は正しく設定されていそうです。
では何が問題なのか?
エラー文の中に少し気になる一文がありました
refusing to allow a GitHub App to create or update workflow
エラー文でググってみると以下の記事がヒット
どうやら Github Workflow で Actions の定義ファイルを変更するには特別なパーミッションが必要なようです
解決方法
と言うわけで、workflow を変更する権限を持った専用の PAT を発行してみる
workflow
にチェックを入れるのがポイント
ここで発行した PAT を Github Action の Secret Token に適当な名前で入れます
今回は PAT_GRANTED
としました
これを actions/checkout
の引数に渡してあげます
(stefanzweifel/git-auto-commit-action
の引数でないことに注意)
uses: actions/checkout@v4
with:
token: ${{ secrets.PAT_GRANTED }}
さて、結果はいかに・・・
[main e9282fc] Format by GitHub Actions
Author: kromiii <kromiii@users.noreply.github.com>
1 file changed, 1 insertion(+), 1 deletion(-)
To https://github.com/kromiii/astro-notion-blog
b9d9aa5..e9282fc main -> main
git-auto-commit-action が成功しました
まとめ
Github Actions で .github/workflow 配下のファイルを変更する場合は特別な権限が必要みたいなので注意です
そう言う場合は個別にPATを発行して Actions で指定してあげましょう