GitHub APIのレート制限でツールのインストールに失敗する

jdx/mise-actionは、ツールの最新バージョン確認やリリースアセットのダウンロードにGitHubのAPIを使う。GitHub APIは未認証のアクセスに対して低いレート制限がかかっている。多くのワークフローを同時に実行する環境ではこの制限に引っかかり、インストールに失敗する場合がある。github_token入力を使うと、GitHubの認証情報でAPIリクエストを認証し、レート制限を緩和できる。

github_tokenは既定で自動設定されている

jdx/mise-actionは、何も指定しなくても既定でワークフロー実行時に自動発行されるGITHUB_TOKENを使う。

- uses: actions/checkout@v4
- uses: jdx/mise-action@v4
- run: mise --version

ログを確認すると、github_tokenが渡され、mise内部でMISE_GITHUB_TOKENとして設定されていることが分かる。

github_token: ***
Setting MISE_GITHUB_TOKEN=***
DEBUG GET https://api.github.com/repos/jqlang/jq/releases?per_page=100
DEBUG GET https://api.github.com/repos/jqlang/jq/releases?per_page=100 200 OK

mise installがツールのリリース一覧を取得する際、このトークンを使ってGitHub APIにリクエストしている。

明示的にトークンを指定する

同一リポジトリ内での利用であれば既定のGITHUB_TOKENで十分だが、より緩いレート制限を使いたい場合や、プライベートリポジトリでホストされたツールを取得したい場合は、github_tokenに個人アクセストークンなどを明示的に渡す。

- uses: jdx/mise-action@v4
  with:
    github_token: ${{ secrets.MISE_GITHUB_TOKEN }}

secretsに事前登録した専用のトークンを渡すと、既定のGITHUB_TOKENとは異なる権限やレート制限枠を使える。