🌻
GitHub Actions: actions/checkout で、repository not found エラーが出るときの回避策
発生している事象
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やデプロイ用などで作っている(人に依存しない)アカウントがあれば、そちらで作るのが望ましい。
- 該当アカウントで https://github.com/settings/tokens にアクセス
- 「Generate new token」を押下
- 「Scope」は「Repo」を設定して「Generate Token」押下
- 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
とても参考になりました。ありがとうございます!