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