🐵

GitHub Actions公式から出たactions/create-github-app-tokenへ移行

2024/06/11に公開

経緯

GitHub AcionsでCI/CD環境を構築しています。
その実装の中で、サードパーティ製のgetsentry/action-github-app-tokenを使用してトークンの取得をしていました。
いつメンテンナンスがなくなるか分からないサードパーティ製の危うさから、公式から出ているactions/create-github-app-tokenに移行することにしました。

実装

まず、変更前のコードがこちらです。

cicd.yml(getsentry/action-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に移行する場合、下記のようになります。

cicd.yml(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を使用していない場合はいらないはずです。

参考

https://ymse.hatenablog.com/entry/2023/10/19/070000

脚注
  1. actions/create-github-app-tokenの公式
    https://github.com/getsentry/action-github-app-token ↩︎

  2. getsentry/action-github-app-tokenの公式
    https://github.com/actions/create-github-app-token ↩︎

  3. シークレットの説明
    https://docs.github.com/ja/actions/security-guides/using-secrets-in-github-actions ↩︎

  4. githubコンテキストの説明
    https://docs.github.com/ja/actions/learn-github-actions/contexts#github-context ↩︎

エックスポイントワン技術ブログ

Discussion