🌻

GitHub Actions: actions/checkout で、repository not found エラーが出るときの回避策

2021/06/16に公開

発生している事象

GitHub Actionsで、普段は問題なく actions/checkout
そのActionsが定義されているカレントリポジトリのソースをチェックアウトできているのに
時々 以下のようなエラーが出ることがある。

 /usr/bin/git -c protocol.version=2 fetch --prune --progress --no-recurse-submodules origin +refs/heads/*:refs/remotes/origin/* +refs/tags/*:refs/tags/*
  remote: Repository not found.
  Error: fatal: repository 'https://github.com/awesome/awesome-service/' not found
  The process '/usr/bin/git' failed with exit code 128

この現象、しばらく時間をおくと、自然復旧している。

回避策

この問題について、GitHub Supportに問い合わせたところ
すでにこの問題を認識していて、調査中とのこと。
問題は デフォルトの GITHUB_TOKENに由来するとのことで
パーソナルアクセストークンを使用すれば回避できるとのこと。

以下、対応方法

パーソナルアクセストークン を作成する

「パーソナル」アクセストークン、なので、個人ユーザに依存するトークンになる。
そのため、実際の開発者のアカウントではなく、botやデプロイ用などで作っている(人に依存しない)アカウントがあれば、そちらで作るのが望ましい。

  1. 該当アカウントで https://github.com/settings/tokens にアクセス
  2. 「Generate new token」を押下
  3. 「Scope」は「Repo」を設定して「Generate Token」押下
  4. Tokenが表示されるのでコピー等しておく(一度しか表示されないので注意)

Secrets に登録

該当リポジトリの Settings > Secrets から、「New repository secret」押下

Nameは何かわかりやすい名称を (例: MY_GITHUB_TOKEN )
Valueには先程発行したパーソナルアクセストークンの文字列を入れる。

Actionsの設定ファイルを修正

通常は

    steps:
      - uses: actions/checkout@v2

となっているところを、設定したパーソナルアクセストークンを利用するよう、以下のように修正

    steps:
      - uses: actions/checkout@v2
        with:
	  token: ${{ secrets.MY_GITHUB_TOKEN }}

(この token の値は、指定しないと デフォルトの GITHUB_TOKEN が使われる。)

参考

Discussion