ノート: GitHub Actionsは、GitHub Enterprise Server 2.22で限定ベータとして利用可能でした。 ベータは終了しました。 GitHub Actionsは、GitHub Enterprise Server 3.0以降で一般に利用可能になりました。 詳しい情報については、GitHub Enterprise Server 3.0 のリリースノートを参照してください。
- GitHub Enterprise Server 3.0以降へのアップグレードに関する詳しい情報については「GitHub Enterprise Serverのアップグレード」を参照してください。
- アップグレード後のGitHub Actionsの設定に関する詳しい情報については、GitHub Enterprise Server 3.0のドキュメンテーションを参照してください。
ノート: GitHubホストランナーは、現在GitHub Enterprise Serverでサポートされていません。 GitHubパブリックロードマップで、計画されている将来のサポートに関する詳しい情報を見ることができます。
GITHUB_TOKEN
シークレットについて
At the start of each workflow run, GitHub automatically creates a unique GITHUB_TOKEN
secret to use in your workflow. このGITHUB_TOKEN
は、ワークフローの実行内での認証に利用できます。
GitHub Actionsを有効化すると、GitHubはリポジトリにGitHub Appをインストールします。 GITHUB_TOKEN
シークレットは、GitHub Appインストールアクセストークンです。 このインストールアクセストークンは、リポジトリにインストールされたGitHub Appの代わりに認証を受けるために利用できます このトークンの権限は、ワークフローを含むリポジトリに限定されます。 詳しい情報については「GITHUB_TOKEN
の権限」を参照してください。
各ジョブの開始前に、GitHub はジョブのインストールアクセストークンをフェッチします。 トークンはジョブが終了すると期限切れになります。
このトークンは、github.token
コンテキストにもあります。 詳細については、「コンテキスト」を参照してください。
ワークフロー内でのGITHUB_TOKEN
の利用
シークレットを参照するための標準構文 ${{ secrets.GITHUB_TOKEN }}
を使用して、GITHUB_TOKEN
を使用できます。 GITHUB_TOKEN
の使用例には、トークンをアクションへの入力として渡すことや、トークンを使用して認証済みの GitHub APIリクエストを作成することが含まれます。
リポジトリのGITHUB_TOKEN
を使ってGitHub Actions アプリケーションの代わりにタスクを実行した場合、そのGITHUB_TOKEN
によって生じたイベントは、新たなワークフローの実行を生じさせません。 これによって、予想外の再帰的なワークフローの実行が生じないようになります。 たとえば、ワークフローの実行によってリポジトリのGITHUB_TOKEN
を使ったコードのプッシュが行われた場合、そのリポジトリにpush
イベントが生じた際に実行されるよう設定されたワークフローが含まれていても、新しいワークフローの実行は行われません。
例 1: GITHUB_TOKEN
を入力として渡す
以下のワークフローの例ではlabeler actionを使用しています。これには、repo-token
入力パラメータの値としてGITHUB_TOKEN
を渡すことが必要です。
name: Pull request labeler
on: [ pull_request_target ]
jobs:
triage:
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
例 2: 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 http(s)://[hostname]/api/v3/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 }}_."
}' \
--fail
GITHUB_TOKEN
の権限
GitHub Apps が各権限でアクセスできる API エンドポイントについては、「GitHub App の権限」を参照してください。
スコープ | アクセスタイプ | フォークしたリポジトリからのアクセス |
---|---|---|
actions | 読み取り/書き込み | 読み取り |
checks | 読み取り/書き込み | 読み取り |
contents | 読み取り/書き込み | 読み取り |
deployments | 読み取り/書き込み | 読み取り |
issues | 読み取り/書き込み | 読み取り |
メタデータ | 読み取り | 読み取り |
パッケージ | 読み取り/書き込み | 読み取り |
pull requests | 読み取り/書き込み | 読み取り |
repository projects | 読み取り/書き込み | 読み取り |
statuses | 読み取り/書き込み | 読み取り |
GITHUB_TOKEN
で利用できない権限を要求するトークンが必要な場合は、個人アクセストークンを生成して、それをリポジトリのシークレットに設定できます。
- リポジトリに対して適切な権限を持つトークンを利用もしくは生成してください。 詳しい情報については、「個人アクセストークンを作成する」を参照してください。
- ワークフローのリポジトリにそのトークンをシークレットとして追加し、
${{ secrets.SECRET_NAME }}
構文でそれを参照してください。 詳しい情報については、「暗号化されたシークレットの作成と利用」を参照してください。