Github Appを使って別リポジトリのワークフローを実行するための一時的なPATを発行する

Github Appを使って別リポジトリのワークフローを実行するための一時的なPATを発行する

Github Appを使ってGithub Actions内で一時的なPATを生成する方法について試してみました。別リポジトリのワークフロー実行に必要な認証情報を、セキュアに取得できる手法をご紹介します。
2026.09.08

こんばんは、情報システム室の夏目です。

先日、Github Actionsにおいて別リポジトリのワークフローを実行するための方法についてまとめました。

https://dev.classmethod.jp/articles/call-github-actions-workflow/

実行のためにはPersonal Access Token (PAT)が必要になります。
今回はGithub Appを使って一時的なPATをGithub Actions内で作成する方法について試してみました。

1. Github Appを作成する

https://github.com にアクセスします。

44af7b4f-9ba0-4b80-a766-3c2c5a212a7f

右上の自分のアイコンをクリックします。

e7c4147b-1831-4367-a3f8-2b8b9c447ae8

Settings をクリックします。

aa8174d1-fb6b-42df-85c1-09d799010eae

下までスクロールして、 Developer settings をクリックします。

d020302b-1209-475f-9edd-9c4e2801e30b

f7dadab4-1a58-47bf-ba37-aaa5e313c396

New Github App をクリックします。

abfa1aec-2b98-46f6-8589-618536e157c4

Github App nameHomepage URL を入力します。
ここでは次のように入力します。

  • Github App name: Workflow Dispatch Token (sinofseven)
  • Homepage URL: https://github.com/sinofseven

Expire user authorization tokens の設定は必要ないのでチェックを外します。

下にスクロールします。

07561ebe-4df5-4ae7-a46d-11e1913ce9b6

Webhook を使用しないので Active のチェックボックスを外します。

今回は workflow_dispatch を使用するので次の権限を設定します。

  • Repository permissions -> Actions: Read and write

更に下にスクロールします。

0c9a3fd5-4972-45ae-8970-9ea7f146da18

Where can this GitHub App be installed? で作成するGithub Appをインストールできる対象を指定します。
今回は Only on this account を選択し、自分のアカウントだけがインストールできるようにします。

Create Github App をクリックします。

25184167-ef34-41b2-b20d-beba8b5d96df

これでGithub Appの作成ができました。

Where can this GitHub App be installed? - Only on this account

今回の設定ではリポジトリのオーナーが自分 (sinofseven )であるリポジトリにのみGithub Appをインストールできます。
では、別のOrganizationのリポジトリには Any account を選択して任意のアカウントでインストール可能にする必要があるのか。

そんなことはありません。

今回はGithub Accountの Developer Settings でGithub Appを作成しましたが、Organizationの Developer Settings でGithub Appを作成すれば良いです。
その場合は作成した Only on this account を選択すると、Organizationのリポジトリにインストール可能になります。

74f46c63-b29e-4a8b-aa61-f136a1f8f2c9
(luciferous-laboratory というOrganizationでGithub Appを作成しようとしているときの画像)

2. Github AppでPrivate Keyを発行する

作成したGithub Appの(設定)画面を下にスクロールします。

d5306da6-6fa3-45d8-8778-d2a925dce87e

580fec8a-8d6d-437e-8196-831cc047a8ca

Private keys -> Generate a private key の下にある Generate a private key のボタンをクリックします。

5ee2d42a-3785-425b-9248-eab3ff621a2c

Private keyが作成され、pemファイルでダウンロードされます。

3. Github Appをリポジトリにインストールする

作成したGithub Appをリポジトリにインストールします。

87a4f374-ab40-4bce-b6e0-5dda555ad997

画面左の Install App をクリックします。

b1d235c0-94b4-4fdc-bae7-5596ec8cb671

install のボタンをクリックします。

c607975b-4f57-44b5-bd83-29a5614117e7

All repositories を選択するとアカウントがオーナーになっているリポジトリすべてにインストールされます。

今回はインストールするリポジトリを選択する Only select repositories を選択し、 target-repository を選択します。

d5b83852-d42b-4c67-8867-3225571b8db7

Install をクリックします。

f61deec8-def3-4b04-a1e9-8045bc4144d1

インストールができました。

target-repository に設定しているワークフロー

.github/workflows/flow.yml
on:
  workflow_dispatch: 

jobs: 
  job:
    runs-on: ubuntu-24.04
    steps:
      - run: echo "Call"

実行ができたことを確認するだけなので Call と出力するだけのワークフローです。

4. 別のリポジトリのワークフローから実行する

今回は sinofseven/dispatch-repository というリポジトリから実行します。

4-1. 必要な値をSecretsに登録する

まず最初にGithub AppのClient IDとPrivate KeyをSecretsに登録します。
(Client IDはGithub Appの設定画面に記載されています)
(Private Keyはダウンロードされたpemファイルの中身の文字列をそのまま登録します)

a15e9db1-1ef2-4159-ac0d-078cb26c1ab0

ここでは APP_CLIENT_IDAPP_PRIVATE_KEY という名前で登録しました。

4-2. 別リポジトリのワークフローを実行するワークフローを作成する

.github/workflows/call.yml
on:
  workflow_dispatch: 

jobs: 
  call:
    runs-on: ubuntu-24.04
    steps:
      - name: Request PAT
        id: request-pat
        uses: actions/create-github-app-token@v3
        with:
          client-id: ${{ secrets.APP_CLIENT_ID }}
          private-key: ${{ secrets.APP_PRIVATE_KEY }}
          owner: sinofseven
          repositories: target-repository
      - name: Call Workflow
        uses: actions/github-script@v7
        with:
          github-token: ${{ steps.request-pat.outputs.token }}
          script: |
            await github.rest.actions.createWorkflowDispatch({
              owner: "sinofseven",
              repo: "target-repository",
              workflow_id: "flow.yml",
              ref: "master"
            })

Github Actionsでは actions/create-github-app-token というアクションを使ってPATを生成できます。
ここで生成したPATはデフォルトで1時間のみ有効です。

特定のリポジトリに対するPATを生成する場合は ownerrepositories を指定します。

このActionの結果としてPAT (installation token) が outputs.token に出力されます。
後続のステップで使用するために、Actionを実行するステップで id: request-pat と名前を付けて steps.request-pat.outputs.token という名前でアクセスします。

4-3. 実行する

作成したワークフローを実行すると次のようになりました。

1c786cab-47b1-4de2-b572-ff7fe13582f5

正常に別のリポジトリのワークフロー起動ができていることがわかります。

別リポジトリのワークフローを確認すると、きちんと起動されていることがわかります。

d3d8c4d0-87be-4fff-b20d-2cd2431fbb52

c8dec643-8bbc-4f3b-935e-3328b2067ddb

まとめ

以上、Github Appを使ってGithub Actionsの中で一時的なPATを取得する話でした。

何かのお役に立てたら幸いです。

この記事をシェアする

関連記事