GitHub App を利用した GitHub Actions の認証
はじめに
github actions
で github app
を使用した組織の認証を行うにあたり
github app
について調査してみました。
GitHub App 認証の種類
GitHub App
には複数の認証が存在する
GitHub Appとしての認証
GitHub App インストールとしての認証
ユーザーに代わって GitHub アプリで認証する
GitHub Actions ワークフローで GitHub App を使用して認証する
作成するGitHub Appについて
GitHub Actions
ワークフローで GitHub App
を使用した認証を行いたいので
今回は GitHub Actions ワークフローで GitHub App を使用して認証する方法を見てみようと思います。
Organizationや別のリポジトリ内のアクセスについて
Organization 内や別のリポジトリ内のリソースなど、追加のリソースにアクセスする必要がある場合は、GitHub App を使用できます。 personal access token ではなく GitHub App を使う場合の理由の詳細については、「GitHub App の作成について」を参照してください。
GitHub App の認証
GitHub App を使って認証済み API を実行するための大まかな手順
まずGitHub App
を登録してinstall
する
- GitHub App を登録し
- アプリの資格情報を格納し
- アプリをインストールする
次にアプリを使用してトークンの生成をする
- アプリを使ってインストール アクセス トークンを作成し
- インストール アクセス トークンを使って、
GitHub Actions
ワークフローで認証済みのAPI実行をする
※トークンを必要とするカスタム アクションにインストール アクセス トークンを渡すことも可能
具体的な手順はドキュメントに記載されています。
公式が提供しているtokenを生成してくれるRepo
公式にはサードパーティ製のアクションを利用したくない場合は、fork
して利用するか、もしくは自前で作成するように推奨しています。
公式のactions
# 公式が提供していくれている composite action
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@v1
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 App
のAPP_ID
とAPP_PRIVATE_KEY
を渡すことでGitHub Actions
ワークフローで実認証済みのAPI実行をすることができます。
自前での作成
今回は自前で作成する方にしてみました。
具体的な作成方法は公式のドキュメントや tmknom さんのGitHub Appsトークン解体新書:GitHub ActionsからPATを駆逐する技術を参考にさせていただき、非常に理解が深まりました。
ありがとうございます。
利用した GitHub API
GitHub App
のインストール アクセストークンを生成するにあたり
利用したREST API
はこちらです。
Discussion