【Github】Github Actions ~ GITHUB_TOKEN / permissions ~

■ はじめに

https://dk521123.hatenablog.com/entry/2024/04/13/232832

で、はじめ、
環境変数「REVIEWDOG_GITHUB_API_TOKEN」を設定する際に
Tokenを発行していたが、「GITHUB_TOKEN シークレット」
というものを知ったのでメモ。
また、permissionsについても分かったので、それもメモ。

目次

【1】GITHUB_TOKEN シークレット
【2】GITHUB_TOKEN シークレット の参照
【3】permissions
【4】GITHUB_TOKEN シークレット の利点
【5】サンプル

【1】GITHUB_TOKEN シークレット

https://docs.github.com/ja/actions/security-guides/automatic-token-authentication#about-the-github_token-secret

より抜粋
~~~~~~~~~~~~~~
各ワークフロー ジョブの開始時に、GitHub によって、
ワークフローで使用する一意の GITHUB_TOKEN シークレットが自動的に作成
・・・略・・・
ジョブが終了するか最大 24 時間後に、GITHUB_TOKEN の有効期限が切れます。
~~~~~~~~~~~~~~

【2】GITHUB_TOKEN シークレット の参照

* ${{ secrets.GITHUB_TOKEN }} によって参照する

https://docs.github.com/ja/actions/security-guides/automatic-token-authentication#using-the-github_token-in-a-workflow

    steps:
      env:
        REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}

【3】permissions

* permissions によって
 GITHUB_TOKEN に付与されたアクセス権限を指定する

jobs:
  demo-pull-request:
    runs-on: ubuntu-latest
    # ★この部分
    permissions:
      contents: read
      pull-requests: write
    # https://docs.github.com/ja/enterprise-cloud@latest/actions/using-jobs/assigning-permissions-to-jobs#defining-access-for-the-github_token-scopes  
    # permissions: read-all
    # permissions: write-all

https://docs.github.com/ja/enterprise-cloud@latest/actions/using-jobs/assigning-permissions-to-jobs#overview

permissions Explanations
actions GitHub Actions操作
checks チェック実行とチェック スイートを操作
contents リポジトリの内容を操作
deployments デプロイを操作
id-token OpenID Connect (OIDC) トークンをフェッチ
issues イシューを操作
discussions GitHub Discussions を操作
packages GitHub Packages を操作
pages GitHub Pages を操作
pull-requests pull request を操作
repository-projects GitHub プロジェクト (クラシック) を操作
security-events GitHub コード スキャンと Dependabot アラートを操作
statuses コミットの状態を操作

【4】GITHUB_TOKEN シークレット の利点

* 「PAT(Personal Access Tokens)」と比べて、以下の利点がある
~~~~~~~
[1] Tokenの有効期限は、その時限りなのでローテーションなど気にしなくていい
[2] ユーザが離脱するなど考えなくていい
[3] 権限操作がWorkflowごとで可能
~~~~~~~

【5】サンプル

https://docs.github.com/ja/actions/security-guides/automatic-token-authentication#example-1-passing-the-github_token-as-an-input

name: Open new issue
on: workflow_dispatch

jobs:
  open-issue:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      issues: write
    steps:
      - run: |
          gh issue --repo ${{ github.repository }} \
            create --title "Issue title" --body "Issue body"
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

その他
https://docs.github.com/ja/actions/security-guides/automatic-token-authentication#example-2-calling-the-rest-api

関連記事

Github ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/07/18/234652
Github Actions ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/04/142835
Github Actions ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2022/06/16/151443
Github Actions ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/12/22/195715
Github Actions ~ pull_request / pull_request_target ~
https://dk521123.hatenablog.com/entry/2024/04/10/152101
reviewdog ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2024/04/13/232832