Skip to main content

このバージョンの GitHub Enterprise サーバーはこの日付をもって終了となります: 2026-03-17. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの向上、新機能の向上を図るために、最新バージョンの GitHub Enterprise サーバーにアップグレードしてください。 アップグレードに関するヘルプについては、GitHub Enterprise サポートにお問い合わせください

GitHub Actions ワークフローでGitHub アプリを使用して認証済み API 要求を作成する

GitHub App からのインストール アクセス トークンを使って、GitHub Actions ワークフローで認証済み API 要求を行うことができます。 トークンをカスタム アクションに渡して、アクションで認証済み API 要求を行えるようにすることもできます。

この記事の内容

GitHub Actions の認証について

GitHub Actions ワークフローで認証済み API 要求を行う必要がある場合、またはトークンを必要とするカスタム アクションを実行する必要がある場合は、可能であれば組み込みの を使う必要があります。 ただし、そのユーザーはワークフローのリポジトリ内のリソースだけにアクセスできます。 Organization 内や別のリポジトリ内のリソースなど、追加のリソースにアクセスする必要がある場合は、GitHub App を使用できます。 personal access token ではなく GitHub App を使う場合の理由の詳細については、「AUTOTITLE」を参照してください。

GitHub App による認証

GitHub App を使って認証済み API 要求を行うには、GitHub App を登録し、アプリの資格情報を格納して、アプリをインストールする必要があります。 これが済んだら、アプリを使ってインストール アクセス トークンを作成できます。それを使って、GitHub Actions ワークフローで認証済み API 要求を行うことができます。 トークンを必要とするカスタム アクションにインストール アクセス トークンを渡すこともできます。

  1. GitHub App を登録します。 GitHub App 登録に、目的のリソースにアクセスするために必要なアクセス許可を付与します。 詳細については、「AUTOTITLE」および「AUTOTITLE」を参照してください。

  2. GitHub App のアプリ ID を GitHub Actions 構成変数として格納します。 アプリ ID は、アプリの設定ページで確認できます。 アプリ ID は、クライアント ID とは異なります。 GitHub App の [Settings] ページに移動する方法の詳細については、「AUTOTITLE」を参照してください。 構成変数の保存の詳細については、「AUTOTITLE」を参照してください。

  3. アプリケーションの秘密鍵を生成してください。 作成されたファイルの内容をシークレットとして保存します。 ( や など、ファイルの内容全体を格納します)。詳しくは、「AUTOTITLE」をご覧ください。 シークレットの保管の詳細については、「AUTOTITLE」を参照してください。

  4. 適切なアカウントに GitHub App をインストールし、ワークフローからアクセスするすべてのリポジトリへのアクセス許可とアクセス権限を付与します。 詳しくは、「AUTOTITLE」をご覧ください。

  5. GitHub Actions ワークフローで、API 要求を行うために使用できるインストール アクセス トークンを作成します。

    これを行うには、次の例に示すように、GitHub 所有のアクションを使用できます。 サード パーティのアクションを使いたくない場合は、アクションをフォークして変更するか、ワークフローでインストール トークンを手動で作成するスクリプトを記述できます。 詳しくは、「AUTOTITLE」をご覧ください。

    次に例示するワークフローでは、 アクションを使ってインストール アクセス トークンを生成します。 その後、ワークフローでそのトークンを使って、GitHub CLI から API 要求を行います。

    次のワークフローの を、アプリ ID を格納した構成変数の名前に置き換えます。 を、アプリの秘密キーを格納したシークレットの名前に置き換えます。

YAML
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@v2
        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