注釈: GitHub Enterprise Server 2.22 での GitHub Actions サポートは、限定パブリックベータです。 To review the external storage requirements and request access to the beta, see "Getting started with GitHub Actions for GitHub Enterprise Server."
Note: GitHub-hosted runners are not currently supported on GitHub Enterprise Server. You can see more information about planned future support on the GitHub public roadmap.
GITHUB_TOKEN
シークレットについて
GitHubは、ワークフローで利用するGITHUB_TOKEN
シークレットを自動的に生成します。 このGITHUB_TOKEN
は、ワークフローの実行内での認証に利用できます。
GitHub Actionsを有効化すると、GitHubはリポジトリにGitHub Appをインストールします。 GITHUB_TOKEN
シークレットは、GitHub Appインストールアクセストークンです。 このインストールアクセストークンは、リポジトリにインストールされたGitHub Appの代わりに認証を受けるために利用できます このトークンの権限は、ワークフローを含むリポジトリに限定されます。 詳しい情報については「GITHUB_TOKEN
の権限」を参照してください。
各ジョブの開始前に、GitHub はジョブのインストールアクセストークンをフェッチします。 トークンはジョブが終了すると期限切れになります。
このトークンは、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
の権限
GitHub Apps が各権限でアクセできる API エンドポイントについては、「GitHub App の権限」を参照してください。
権限 | アクセスタイプ | フォークしたリポジトリからのアクセス |
---|---|---|
actions | 読み取り/書き込み | 読み取り |
checks | 読み取り/書き込み | 読み取り |
contents | 読み取り/書き込み | 読み取り |
deployments | 読み取り/書き込み | 読み取り |
issues | 読み取り/書き込み | 読み取り |
メタデータ | 読み取り | 読み取り |
パッケージ | 読み取り/書き込み | 読み取り |
pull requests | 読み取り/書き込み | 読み取り |
repository projects | 読み取り/書き込み | 読み取り |
statuses | 読み取り/書き込み | 読み取り |
GITHUB_TOKEN
で利用できない権限を要求するトークンが必要な場合は、個人アクセストークンを生成して、それをリポジトリのシークレットに設定できます。
- リポジトリに対して適切な権限を持つトークンを利用もしくは生成してください。 詳しい情報については、「個人アクセストークンを作成する」を参照してください。
- ワークフローのリポジトリにそのトークンをシークレットとして追加し、
${{ secrets.SECRET_NAME }}
構文でそれを参照してください。 詳しい情報については、「暗号化されたシークレットの作成と利用」を参照してください。