📑

[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