GitHub Actions公式から出たactions/create-github-app-tokenへ移行
経緯
GitHub AcionsでCI/CD環境を構築しています。
その実装の中で、サードパーティ製のgetsentry/action-github-app-tokenを使用してトークンの取得をしていました。
いつメンテンナンスがなくなるか分からないサードパーティ製の危うさから、公式から出ているactions/create-github-app-tokenに移行することにしました。
実装
まず、変更前のコードがこちらです。
- name: github app access token
id: get-github-app
uses: getsentry/action-github-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY}}
app_idとprivate_keyを渡してトークンを取得するシンプルな処理です。
上記の挙動を変えずに、actions/create-github-app-tokenに移行する場合、下記のようになります。
- name: github app access token
uses: actions/create-github-app-token@v1
id: get-github-app
with:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.PRIVATE_KEY}}
owner: ${{ github.repository_owner }}
注意点
getsentry/action-github-app-tokenとactions/create-github-app-tokenの公式を参照して簡単にできそうですが、submodulesを使用している場合、1つ注意点があります。
それは、ownerの指定です!
getsentry/action-github-app-tokenの場合、デフォルトですべてのリポジトリにアクセスできるのですが、actions/create-github-app-tokenではワークフローが動いているリポジトリのみにアクセスできるトークンが発行されるようです。
というわけで今回のケースでは、ownerにリポジトリのオーナーを設定するわけです。
ownerはオプショナルな引数で、submodulesを使用していない場合はいらないはずです。
参考
-
actions/create-github-app-tokenの公式
https://github.com/getsentry/action-github-app-token ↩︎ -
getsentry/action-github-app-tokenの公式
https://github.com/actions/create-github-app-token ↩︎ -
シークレットの説明
https://docs.github.com/ja/actions/security-guides/using-secrets-in-github-actions ↩︎ -
githubコンテキストの説明
https://docs.github.com/ja/actions/learn-github-actions/contexts#github-context ↩︎
Discussion