はじめに
個人で作っているReactアプリの変更をpushした際、GitHubActionsを使って自動でビルドしてGitHubPagesにデプロイするまでを自動化しようとした際、エラーが発生したのでその解決までをメモする
発生したエラー
/usr/bin/git push origin gh-pages
remote: Permission to xxx/yyy.git denied to github-actions[bot].
fatal: unable to access 'https://github.com/xxx/yyy.git/': The requested URL returned error: 403
Error: Action failed with "The process '/usr/bin/git' failed with exit code 128"
エラーから読み取れるのは
- pushする際に403エラーが出ている
- リポジトリの認証周りに問題がありそう?
仮説
初めに怪しいと思ったのは、どこからともなく入っているトークン周りで、一体どこから出てきたんだと言わんばかりのここが怪しいと思い、調べたところ問題ないらしい
github_token: ${{ secrets.GITHUB_TOKEN }}
各ワークフロー実行の開始時に、GitHub によって、ワークフローで使用する一意の GITHUB_TOKEN シークレットが自動的に作成されます。 GITHUB_TOKEN はワークフロー実行での認証に使用できます。
正式らしくて便利としか。すばらしい。
解決方法
結局、GitHubActions用のパーミッションをGitHubの設定から変更すれば解決した。
デフォルトだとRead repository contents and packages permissions
にチェックがついていてRead権限のみなので、Writeも許可するように変更する。するとpushが完了した。
/usr/bin/git push origin gh-pages
Everything up-to-date
おわりに
CI/CDの構築はいろんな罠が潜むので、しっかりエラーログを見ることが大切。それと、デフォルトはRead権限のみだと覚えておく。
参考