📑
[Github Actions] permissions を指定すると Private Repo のCheckout が出来なくなった
自分が知らんかったので共有のため。
公式Docなどは詳しく調べられてないです🙇♂️
問題
下記のようなありがちなWorkflowを書いた。
name: ci test
on:
push:
jobs:
ci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
「あ、レポートをGithub Pagesにデプロイしたいわw」
と思ったので、actions/deploy-pages のREADMEを見ながら 下記のように permissions を追加した。
※ with とかは色々省いています。
name: ci test
on:
push:
permissions:
pages: write
id-token: write
jobs:
ci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/deploy-pages@v2
これで actions/checkout でエラーが出るようになった。
remote: Repository not found.
Error: fatal: repository 'https://github.com/TakashiAihara/***' not found
The process '/usr/bin/git' failed with exit code 128
Waiting 15 seconds before trying again
調査
ログを見ると、
▼ permissions 追加前
GITHUB_TOKEN Permissions
Contents: read
Metadata: read
Packages: read
▼ permissions 追加後
GITHUB_TOKEN Permissions
Metadata: read
Pages: write
Contentsのreadが吹っ飛んでいた。
どうやら、デフォルトの permissions が隠されていて、明示的に指定すると丸ごと吹っ飛ぶみたいだった。
解決
contents: read を追加して成功。
permissions:
contents: read
pages: write
id-token: write
蓋を開けてみたら「仕方ないよな」とは思えるけども。
Discussion