0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GitHub APIでrate limitでリクエストが失敗した時の対処法

Last updated at Posted at 2023-08-17

公式ドキュメントにも手厚く記載されている内容ですが、備忘録も兼ねて記載しておきます。

TL;DR

  • GitHub APIをリクエストする時は認証する
  • GitHub Actionsの場合はGITHUB_TOKENかGitHub Appを使って認証する

GitHub APIのレート制限について

以下のようにレート制限があるので認証せずにリクエストしてるとCIが失敗することがある。

認証されていないリクエストでは、レート制限により 1 時間あたり最大 60 リクエストまで可能です。 認証されていないリクエストは、リクエストを発行した人ではなく、発信元の IP アドレスに関連付けられます。

具体的にどんなエラーに遭遇したか?

GitHub Actionsでkustomizeをインストールする時に頻繁にrate limitエラーが出ていました。最初は原因が分からず以下のようにリトライを入れることで緩和していましたがそれでも失敗する時がありました。

- name: Install kustomize
  run: |
    curl -s --retry 3 "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/kyaml/v0.13.10/hack/install_kustomize.sh" | bash
    chmod +x kustomize
    echo ${{ github.workspace }} >> $GITHUB_PATH

install_kustomize.shはapi.github.comからkustomizeをダウンロードする作りになっているため、認証なしでリクエストするとrate limitエラーになっていました。

ちなみにinstall_kustomize.shは公式(kubernetes-sigs/kustomize)で提供されているインストールスクリプトです。

上記のバージョン(kyaml/v0.13.10)では、GitHub認証に対応していなかったのですがこのPRで対応してくれていたのでバージョンを上げつつ認証を通してやることで解消しました。

- name: Install kustomize
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  run: |
    curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/kyaml/v0.14.3/hack/install_kustomize.sh" | bash
    chmod +x kustomize
    echo ${{ github.workspace }} >> $GITHUB_PATH

この例に限らずインストールを含むステップはGitHub APIを叩いているケースが多いので、知らないと認証漏れでAPIエラーになるケースは多そうです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?