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 要求を行うために使用できるインストール アクセス トークンを作成します。
これを行うには、次の例に示すように、事前に作成されたアクションを使用できます。 サード パーティのアクションを使いたくない場合は、
tibdex/github-app-token
アクションをフォークして変更するか、ワークフローでインストール トークンを手動で作成するスクリプトを記述できます。 詳細については、「GitHub App インストールとしての認証」を参照してください。次のワークフロー例では、
tibdex/github-app-token
アクションを使用してインストール アクセス トークンを生成します。 その後、ワークフローでそのトークンを使って、GitHub CLI から API 要求を行います。次のワークフローの
APP_ID
を、アプリ ID を格納した構成変数の名前に置き換えます。APP_PRIVATE_KEY
を、アプリの秘密キーを格納したシークレットの名前に置き換えます。
# このワークフローはGitHubによって認定されていないアクションを使用します。 # それらはサードパーティによって提供され、 # 別個の利用規約、プライバシーポリシー、 # ドキュメントを参照してください。 # GitHub では、コミット SHA にアクションをピン留めすることが推奨されます。 # 新しいバージョンを取得するには、SHA を更新する必要があります。 # タグまたはブランチを参照することもできますが、アクションは警告なしに変更される可能性があります。 on: workflow_dispatch: jobs: demo_app_authentication: runs-on: ubuntu-latest steps: - name: Generate a token id: generate-token uses: tibdex/github-app-token@32691ba7c9e7063bd457bd8f2a5703138591fa58 # v1.9.0 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
# このワークフローはGitHubによって認定されていないアクションを使用します。
# それらはサードパーティによって提供され、
# 別個の利用規約、プライバシーポリシー、
# ドキュメントを参照してください。
# GitHub では、コミット SHA にアクションをピン留めすることが推奨されます。
# 新しいバージョンを取得するには、SHA を更新する必要があります。
# タグまたはブランチを参照することもできますが、アクションは警告なしに変更される可能性があります。
on:
workflow_dispatch:
jobs:
demo_app_authentication:
runs-on: ubuntu-latest
steps:
- name: Generate a token
id: generate-token
uses: tibdex/github-app-token@32691ba7c9e7063bd457bd8f2a5703138591fa58 # v1.9.0
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