jekyllでビルドしたページをデプロイする下記のようなGitHub Action workflowを作っていた。

jobs:
  gh-pages-deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Set up Ruby
      uses: ruby/setup-ruby@v1
      with:
        ruby-version: 3.1
        bundler-cache: true
    - name: Jekyll Build
      run: bundle exec jekyll build
    - name: Deploy
      uses: peaceiris/actions-gh-pages@v3
      with:
        personal_token: $
        publish_dir: ./_site

これをそのまま走らせると下記のエラーで止まる。

remote: Write access to repository not granted.
fatal: unable to access 'https://github.com/your/repo/': The requested URL returned error: 403

Writeアクセスがないぞ、というエラー。

この場合、 permissions でwriteの権限を付与してやるでOK.

permissions:
  contents: write
jobs:
  gh-pages-deploy:
    ...

これでbuild成功!!

GitHub Actions permissions の種類

下記のようなpermissionsの種類と設定がある。

permissions:
  actions: read|write|none
  attestations: read|write|none
  checks: read|write|none
  contents: read|write|none
  deployments: read|write|none
  id-token: write|none
  issues: read|write|none
  discussions: read|write|none
  packages: read|write|none
  pages: read|write|none
  pull-requests: read|write|none
  repository-projects: read|write|none
  security-events: read|write|none
  statuses: read|write|none

権限タイプは下記3つ。

  • read : 読み取り権限
  • write : 書き込み権限
  • none : 権限なし

ref. Controlling permissions for GITHUB_TOKEN - GitHub Docs