👋 We've unified all of GitHub's product documentation in one place! Check out the content for REST API, GraphQL API, and Developers. Stay tuned for a blog post later today.


ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。

GITHUB_TOKENでの認証

GitHubは、GitHub Actionsの代理で認証を受けるために利用できるトークンを提供します。

GitHub ActionsはGitHub Free、GitHub Pro、GitHub FreeのOrganization、GitHub Team、GitHub Enterprise Cloud、GitHub Oneで利用できます。 GitHub Actionsは、レガシーのリポジトリごとのプランを使っているアカウントが所有しているプライベートリポジトリでは利用できません。 詳しい情報については「GitHubの製品」を参照してください。

ここには以下の内容があります:

探していたものは見つけられましたか?

リポジトリに対してwriteアクセスがあるユーザなら、誰でもシークレットの作成、読み取りおよび使用ができます。

GITHUB_TOKENシークレットについて

GitHubは、ワークフローで利用するGITHUB_TOKENシークレットを自動的に生成します。 このGITHUB_TOKENは、ワークフローの実行内での認証に利用できます。

GitHub Actionsを有効化すると、GitHubはリポジトリにGitHub Appをインストールします。 GITHUB_TOKENシークレットは、GitHub Appインストールアクセストークンです。 このインストールアクセストークンは、リポジトリにインストールされたGitHub Appの代わりに認証を受けるために利用できます このトークンの権限は、ワークフローを含むリポジトリに限定されます。 詳しい情報については「GITHUB_TOKENの権限」を参照してください。

Before each job begins, GitHub fetches an installation access token for the job. The token expires when the job is finished.

このトークンは、github.tokenコンテキストにもあります。 詳しい情報については、「GitHub Actions のコンテキストと式構文」を参照してください。

ワークフロー内でのGITHUB_TOKENの利用

GITHUB_TOKENシークレットを利用するためには、ワークフローファイル内で参照しなければなりません。 トークンの利用には、そのトークンを要求するアクションへ入力としてそのトークンを渡すことや、認証を受けたGitHub APIコールの発行が含まれます。

リポジトリのGITHUB_TOKENを使ってGitHub Actions アプリケーションの代わりにタスクを実行した場合、そのGITHUB_TOKENによって生じたイベントは、新たなワークフローの実行を生じさせません。 これによって、予想外の再帰的なワークフローの実行が生じないようになります。 たとえば、ワークフローの実行によってリポジトリのGITHUB_TOKENを使ったコードのプッシュが行われた場合、そのリポジトリにpushイベントが生じた際に実行されるよう設定されたワークフローが含まれていても、新しいワークフローの実行は行われません。

GITHUB_TOKENを入力として渡す例

以下のワークフローの例ではlabeler actionを使用しています。これには、repo-token入力パラメータの値としてGITHUB_TOKENを渡すことが必要です。

name: Pull request labeler
on:
- pull_request
jobs:
  triage:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/labeler@v2
      with:
        repo-token: ${{ secrets.GITHUB_TOKEN }}

REST APIの呼び出しの例

GITHUB_TOKENを使って、認証されたAPIコールを発行できます。 以下のワークフローの例では、GitHub REST APIを使ってIssueを作成しています。

name: Create issue on commit
on:
- push
jobs:
  create_commit:
    runs-on: ubuntu-latest
    steps:
    - name: Create issue using REST API
      run: |
        curl --request POST \
        --url https://api.github.com/repos/${{ github.repository }}/issues \
        --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \
        --header 'content-type: application/json' \
        --data '{
          "title": "Automated issue for commit: ${{ github.sha }}",
          "body": "This issue was automatically created by the GitHub Action workflow **${{ github.workflow }}**. \n\n The commit hash was: _${{ github.sha }}_."
          }'

GITHUB_TOKENの権限

For information about the API endpoints GitHub Apps can access with each permission, see "GitHub App Permissions."

権限アクセスタイプフォークしたリポジトリからのアクセス
actions読み取り/書き込み読み取り
checks読み取り/書き込み読み取り
contents読み取り/書き込み読み取り
deployments読み取り/書き込み読み取り
issues読み取り/書き込み読み取り
metadata読み取り読み取り
packages読み取り/書き込みread
pull requests読み取り/書き込み読み取り
repository projects読み取り/書き込み読み取り
statuses読み取り/書き込み読み取り

GITHUB_TOKENで利用できない権限を要求するトークンが必要な場合は、個人アクセストークンを生成して、それをリポジトリのシークレットに設定できます。

  1. リポジトリに対して適切な権限を持つトークンを利用もしくは生成してください。 For more information, see "Creating a personal access token."
  2. ワークフローのリポジトリにそのトークンをシークレットとして追加し、 ${{ secrets.SECRET_NAME }}構文でそれを参照してください。 詳しい情報については、「暗号化されたシークレットの作成と利用」を参照してください。

探していたものは見つけられましたか?

担当者にお尋ねください

探しているものが見つからなかったでしょうか?

弊社にお問い合わせください