GitHub Actions の認証について
GitHub Actions ワークフローで認証済み API 要求を行う必要がある場合、またはトークンを必要とするカスタム アクションを実行する必要がある場合は、可能であれば組み込みの GITHUB_TOKEN
を使う必要があります。 ただし、GITHUB_TOKEN
でアクセスできるのは、ワークフローのリポジトリ内のリソースだけです。 Organization 内や別のリポジトリ内のリソースなど、追加のリソースにアクセスする必要がある場合は、GitHub App を使用できます。 personal access token ではなく GitHub App を使う場合の理由の詳細については、「GitHub App の作成について」を参照してください。
GitHub App による認証
GitHub App を使って認証済み API 要求を行うには、GitHub App を登録し、アプリの資格情報を格納して、ア���リをインストールする必要があります。 これが済んだら、アプリを使ってインストール アクセス トークンを作成できます。それを使って、GitHub Actions ワークフローで認証済み API 要求を行うことができます。 トークンを必要とするカスタム アクションにインストール アクセス トークンを渡すこともできます。
-
GitHub App を登録します。 GitHub App 登録に、目的のリソースにアクセスするために必要なアクセス許可を付与します。 詳細については、「GitHub App の登録」および「GitHub アプリのアクセス許可を選択する」を参照してください。
-
GitHub App のアプリ ID を GitHub Actions 構成変数として格納します。 アプリ ID は、アプリの設定ページで確認できます。 アプリ ID は、クライアント ID とは異なります。 GitHub App の [Settings] ページに移動する方法の詳細については、「GitHub App 登録の変更」を参照してください。 構成変数の保存の詳細については、「変数に情報を格納する」を参照してください。
-
アプリケーションの秘密鍵を生成してください。 作成されたファイルの内容をシークレットとして保存します。 (
-----BEGIN RSA PRIVATE KEY-----
や-----END RSA PRIVATE KEY-----
など、ファイルの内容全体を格納します)。詳しくは、「GitHub Apps の秘密キーの管理」をご覧ください。 シークレットの保管の詳細については、「GitHub Actions でのシークレットの使用」を参照してください。 -
GitHub App をユーザー アカウントまたは Organization にインストールし、ワークフローでアクセスするリポジトリへのアクセス権をそれに付与します。 詳しくは、「独自の GitHub App のインストール」をご覧ください。
-
GitHub Actions ワークフローで、API 要求を行うために使用できるインストール アクセス トークンを作成します。
これを行うには、次の例に示すように、GitHub 所有のアクションを使用できます。 サード パーティのアクションを使いたくない場合は、
actions/create-github-app-token
アクションをフォークして変更するか、ワークフローでインストール トークンを手動で作成するスクリプトを記述できます。 詳しくは、「GitHub App インストールとしての認証」をご覧ください。次に例示するワークフローでは、
actions/create-github-app-token
アクションを使ってインストール アクセス トークンを生成します。 その後、ワークフローでそのトークンを使って、GitHub CLI から API 要求を行います。次のワークフローの
APP_ID
を、アプリ ID を格納した構成変数の名前に置き換えます。APP_PRIVATE_KEY
を、アプリの秘密キーを格納したシークレットの名前に置き換えます。
on: workflow_dispatch: jobs: demo_app_authentication: runs-on: ubuntu-latest steps: - name: Generate a token id: generate-token uses: actions/create-github-app-token@v1 with: app-id: ${{ vars.APP_ID }} private-key: ${{ secrets.APP_PRIVATE_KEY }} - name: Use the token env: GH_TOKEN: ${{ steps.generate-token.outputs.token }} run: | gh api octocat
on:
workflow_dispatch:
jobs:
demo_app_authentication:
runs-on: ubuntu-latest
steps:
- name: Generate a token
id: generate-token
uses: actions/create-github-app-token@v1
with:
app-id: ${{ vars.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Use the token
env:
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
run: |
gh api octocat