GitHub AppsのToken作成Actionが公式から出たので乗り換えるときの注意点

はじめに

GitHub ActionsでGitHub Appsを使うときには登録時に入手できるApp IDとsecret keyから一時的に使用できるトークンを発行する必要があります。

このトークンはGitHubが用意しているRest APIやGraphQL APIに対してリクエストすることによって入手することができます*1が、いちいちAPIを叩く準備をするのは面倒なので個人が作成したActionであるtibdex/github-app-tokenやSentryが提供しているActionであるgetsentry/action-github-app-tokenを使うことによって楽をすることができました。

今まで非公式なActionに依存していたトークン生成ですが、GitHubが公式でAppsトークンを作成するActionであるactions/create-github-app-tokenを提供するようになったので公式のActionへ依存先を切り替えられるようになりました。 実際、GitHubのドキュメントでは今までtibdex/github-app-tokenを使う手順が紹介されていましたが、actions/create-github-app-tokenを使うように変更*2されています。

docs.github.com

しかし乗り換えるにあたって注意事項がいくつかあったので紹介します。

今回はGitHub Appsが何かについてはスコープ外とします。以下の記事で詳しく説明されているので参考にしてみてください。

zenn.dev

注意事項

1. Optionalな引数を追加で渡さないと、WorkFlowが動いているリポジトリの外にアクセスできない

# https://github.com/actions/create-github-app-token#create-a-token-for-the-current-repository
    steps:
      - uses: actions/create-github-app-token@v1
        id: app-token
        with:
          app-id: ${{ vars.APP_ID }}
          private-key: ${{ secrets.PRIVATE_KEY }}

READMEには上のような例が記載されています。この例には "Create a token for the current repository"というタイトルがついている通りWorkFlowが動いているリポジトリのみにアクセスできるトークンが発行されます。

tibdex/github-app-tokenはデフォルトではGitHub Appsがアクセスできるすべてのリポジトリ*3にアクセスすることができます。またgetsentry/action-github-app-tokenはアクセスできるRepositoryを制限できず、すべてのリポジトリにアクセスできるトークンのみが発行できます。

Git Submodulesを使用しているなどの場合はOptionalな引数であるrepositoriesを指定する必要があるので注意が必要です。

トークンがアクセスできるリポジトリを絞りやすくなって良いですね。

2. 必須引数が既存のActionそのままだとdeprecated

tibdex/github-app-tokenやgetsentry/action-github-app-tokenは必須パラメータであるAppIDとPrivateKeyをそれぞれキーをapp_idprivate_keyとして指定します。

# https://github.com/getsentry/action-github-app-token#usage
  - name: my-app-install token
    id: my-app
    uses: getsentry/action-github-app-token@v2
    with:
      app_id: ${{ secrets.APP_ID }}
      private_key: ${{ secrets.APP_PRIVATE_KEY }}

しかしactions/create-github-app-tokenではスネークケースで指定するapp_id, private_keyはdeprecated扱いとなっていて、かわりにケバブケースでapp-id, private-keyと表記することを求められています。

使えはしますが、いちいちWarningが出るのも面倒なので直しておきましょう。

まとめ

GitHub AppsをGitHub Actionsで使うツールをActions公式が新しく出してきたので乗り換えるときの注意点をまとめました。

GitHubのドキュメントでも紹介されているActionなので、GitHub AppsをGitHub Actionsで使っている人はぜひ移行を検討してみてください。

*1:https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-as-a-github-app-installation

*2:変更があったコミット https://github.com/github/docs/commit/a07fc6cf5f74b3f843319aa6a504db193fc379d7

*3:Appsのインストール時にすべてのリポジトリにアクセスできるようにしたのであれば文字通りすべてのリポジトリにアクセスできるようになる。特定のリポジトリを選択してインストールした場合は、その特定のリポジトリすべてにアクセスできるようになる。