Skip to main content

GitHub Actions ワヌクフロヌで GitHub App を䜿甚しお認蚌枈み API 芁求を䜜成する

GitHub App からのむンストヌル アクセス トヌクンを䜿っお、GitHub Actions ワヌクフロヌで認蚌枈み API 芁求を行うこずができたす。 トヌクンをカスタム アクションに枡しお、アクションで認蚌枈み API 芁求を行えるようにするこずもできたす。

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 芁求を行うこずができたす。 トヌクンを必芁ずするカスタム アクションにむンストヌル アクセス トヌクンを枡すこずもできたす。

  1. GitHub App を登録したす。 GitHub App 登録に、目的のリ゜ヌスにアクセスするために必芁なアクセス蚱可を付䞎したす。 詳现に぀いおは、「GitHub App の登録」および「GitHub アプリのアクセス蚱可を遞択する」を参照しおください。

  2. GitHub App のアプリ ID を GitHub Actions 構成倉数ずしお栌玍したす。 アプリ ID は、アプリの蚭定ペヌゞで確認できたす。 アプリ ID は、クラむアント ID ずは異なりたす。 GitHub App の [Settings] ペヌゞに移動する方法の詳现に぀いおは、「GitHub App 登録の倉曎」を参照しおください。 構成倉数の保存の詳现に぀いおは、「倉数に情報を栌玍する」を参照しおください。

  3. アプリケヌションの秘密鍵を生成しおください。 䜜成されたファむルの内容をシヌクレットずしお保存したす。 (-----BEGIN RSA PRIVATE KEY----- や -----END RSA PRIVATE KEY----- など、ファむルの内容党䜓を栌玍したす)。詳しくは、「GitHub Apps の秘密キヌの管理」をご芧ください。 シヌクレットの保管の詳现に぀いおは、「GitHub Actions でのシヌクレットの䜿甚」を参照しおください。

  4. 適切なアカりントに GitHub App をむンストヌルし、ワヌクフロヌからアクセスするすべおのリポゞトリぞのアクセス蚱可ずアクセス暩限を付䞎したす。 詳しくは、「独自の GitHub App のむンストヌル」をご芧ください。

  5. 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 を、アプリの秘密キヌを栌玍したシヌクレットの名前に眮き換えたす。

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