Github Actionsのワークフロー内でGithub Appからトークンを取得して使う

Github ActionsでGithubトークンを使う場合、自動的にGITHUB_TOKENというシークレットが作られる。このトークンでは権限が足りない、というような場合は別にトークンを用意する必要がある(自分の場合だと、他のリポジトリにコードをPushしたりPullRequestを作る用途で使っている)。誰かのパーソナルアクセストークンを使う必要があると思っていたけど、Github Appを用意して、ワークフロー内でそのAppからトークンを取得して使うことができるということを知った。

使うのは https://github.com/tibdex/github-app-token 。Example Workflowの通り、GithubAppのAPP IDとPRIVATE KEYをSecretに登録して指定するとトークンを取得してくれる。

jobs:
   job:
     runs-on: ubuntu-18.04
     steps:
       - name: Generate token
         id: generate_token
         uses: tibdex/github-app-token@v1
         with:
           app_id: ${{ secrets.APP_ID }}
           private_key: ${{ secrets.PRIVATE_KEY }}
           # Optional (defaults to the current repository).
           # repository: owner/repo
       - name: Use token
         env:
           TOKEN: ${{ steps.generate_token.outputs.token }}
         run: |
           echo "The generated token is masked: ${TOKEN}"

チームで使うリポジトリだと、自分のトークンを使わない方がよいこともあるだろうから覚えておくと便利そう。