🪴

[GitHub Actions]GITHUB_TOKENの権限とPermissions設定

2025/02/05に公開

こんにちは、Nofiです。

GitHub Actionsでworkflowを作成したとき、下記のエラーがでて困ったので解決策まとめです。

remote repository not found
RequestError [HttpError]: Resource not accessible by integration

エラーの正体はGITHUB_TOKENの権限

workflowにどんな権限を与えるのか、必要な権限を確認して設定していきます。

「request method」と「RequestError at 〜」を確認する

エラーが出ているworkflowの「request method」と「RequestError at 〜」を確認します。
ここではrequest methodは「POST」です。

「RequestError at 〜」は「Creat a check run」、URLの「check-runs」にも注目します。

許可する必要のあるAccessを確認する

以下のページでGitHub Appsが各権限でアクセスできるAPIエンドポイントを探し、許可する必要のあるAccessを確認します。
(GitHubのAPIの1つであるREST APIのlatestバージョンのドキュメントです。GitHub Appに必要な権限が確認できます。)
https://docs.github.com/ja/rest/authentication/permissions-required-for-github-apps?apiVersion=2022-11-28

今回は、request method「POST」で、「check-runs」が最後に来ているAPIエンドポイントを探します。こちらです。

GITHUB_TOKENの権限を制御するPermissionsを設定する

Permissionsの種類はこちらに詳しく載っています。
https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/controlling-permissions-for-github_token

いろいろあります。自分がworkflowで何をしようとしているかでPermissionを探します。

今回はchecksにwrite権限が必要なため、Permissionsの項目に設定します。

workflowではこのように権限が許可されます。

しかし、これだけだと失敗しました。

Permissionsのcontentsを設定する必要がある

このままのPermissionsではではリポジトリの中身を操作できないようで、contentsを設定する必要がありました。

contentsは、リポジトリのコンテンツを操作する許可を与えます。たとえば、contents: readは、コミットを一覧表示するアクションを許可し、contents: writeはリリースを作成するアクションを許可します。

contents
Work with the contents of the repository. For example, contents: read permits an action to list the commits, and contents: write allows the action to create a release.

今回リリースは作成していないのでcontents:readを追加します。

workflowではこのように権限が許可されます。

これでworkflowが正常に動きました!

ちなみに、Permissionsを設定していないとこうなります。

まとめ

GitHub Actions導入して、merge時とpull_request作成時のworkflowをなんとか作って動くことを確認していたのですが、PullRequest作成時の動作確認を忘れていました。
案の定、PullRequest作成後からworkflowがずっと落ちていて、よくわかっていなかった私はスルーし続け、なんならmerge以外は落ちるものだと思っていました。(そんなわけない)

権限の許可設定が必要だったんですね。
なんとか今回workflowが使えるようになって助かりました。

GitHub Actionsを使う方の参考になれば幸いです!

Discussion