GitHub Actions:「Artifact storage quota has been hit」
リポジトリを持つアカウントがアーティファクトの保存容量を使い切ったので、GitHub が新しいアーティファクトの保存を断った、という意味です(「アーティファクトの保存容量の上限に達した」)。ビルドに問題はありません。アップロードのステップが失敗し、それと一緒にジョブが失敗します。
見え方
2026年10月29日の公開の実行での、ジョブの注釈です:
Failed to CreateArtifact: Artifact storage quota has been hit. Unable to upload any new artifacts. Usage is recalculated every 6-12 hours. More info on storage limits: https://docs.github.com/en/billing/managing-billing-for-github-actions/about-billing-for-github-actions#calculating-minute-and-storage-spending
- 失敗するのは
actions/upload-artifactか、アーティファクトを保存するほかのアクションです。たとえば Pages のデプロイの前のactions/upload-pages-artifact。 - 後ろのステップは、
if:が失敗の後でも動くものでなければ飛ばされるので、テストが全部通ったジョブも Failure で終わります。10月23日の定期の実行では、ユニットテストも監査も通り、失敗したのはレポートのアップロードだけでした。 - 保存容量は共有なので、同じアカウントか組織のリポジトリは全部同じように失敗します。ある組織では、いくつかのリポジトリの使われないアップロードが、ほかのリポジトリの CI を落としていました(yumaitau/comp #1)。
- 公開のリポジトリも例外ではありません。確かめた2026年10月の報告6件は、どれも公開のリポジトリでした。
数えられるもの
2026年11月3日の GitHub の課金の文書より:
- アカウントごとのアーティファクトの保存容量:GitHub Free 500 MB、GitHub Free(組織)500 MB、Pro 1 GB、Team 2 GB、Enterprise Cloud 50 GB。アーティファクトは GitHub Packages と同じ容量を分け合います。
- キャッシュは別枠(リポジトリごとに10 GB)で、ログは数えられません。
- 使った量は課金の月のあいだ1時間ごとに積み上がり、GB 時間で数えます。アーティファクトを消すといまの保存量は減りますが、その月にもう積み上がった分は減りません。
- アーティファクトは既定で90日残ります。その既定のままで、
mainへのプッシュのたびに約30 MB を上げるワークフローは、343個・約10 GB になりました(tally-books #43)。
1つのリポジトリが持っている量と、大きい順のアーティファクトを見るには:
gh api --paginate "repos/OWNER/REPO/actions/artifacts?per_page=100" --jq '.artifacts[] | select(.expired | not) | .size_in_bytes' | awk '{s+=$1; n++} END {printf "%d artifacts, %.0f MB\n", n, s/1048576}'
gh api --paginate "repos/OWNER/REPO/actions/artifacts?per_page=100" --jq '.artifacts[] | select(.expired | not) | "\(.size_in_bytes)\t\(.created_at[:10])\t\(.name)"' | sort -rn | head
アップロードを戻す
- もう要らないアーティファクトを消す:実行のまとめのページの Artifacts の下のごみ箱か、API で。消したアーティファクトは戻せないので、後のジョブやリリースがまだ使うものは残してください。たとえば10月27日より前に作られたもの全部:
gh api --paginate "repos/OWNER/REPO/actions/artifacts?per_page=100" --jq '.artifacts[] | select(.expired | not) | select(.created_at < "2026-10-27") | .id' | while read id; do gh api -X DELETE "repos/OWNER/REPO/actions/artifacts/$id"; done
- それから待つ。GitHub は保存量を6〜12時間のうちに更新し、それまでアップロードは失敗し続けます(VAYA-App #204)。
- その後も失敗するなら、その月に積み上がった量が上限を超えているのかもしれません。あるアカウントでは、10月21日、どのリポジトリにもアーティファクトが1つも無いのにアップロードが断られ、持ち主は、次の課金の月になるか Actions の予算を $0 より上にすれば戻ると判断しました(M2Watcher #15)。GitHub の文書には、支払い方法が無ければ、容量を使い切った時点で使えなくなるとあります。容量を超えた保存は1 GB・1か月あたり US$0.25 です。
また埋まらないようにする
- アーティファクトは要る間だけ残す:
- uses: actions/upload-artifact@v7 with: name: app path: dist/ retention-days: 3retention-daysはリポジトリの設定(既定は90日)より長くできません。設定は Settings・Actions・General の「Check, workflow run, status, artifact and log retention」です。この設定を短くしても効くのは新しいアーティファクトだけで、2026年10月1日からはチェック・ワークフローの実行・コミットのステータスもその期間で消えるので、アーティファクトだけならretention-daysを使ってください。 - だれかがダウンロードするものだけを上げる。人もジョブも取りに来ないアップロードを外したり、
mainへのプッシュのときだけにしたりしたプロジェクトがいくつもあります(yumaitau/comp #1・M2Watcher #15)。 - 人がダウンロードするビルドは GitHub のリリースに置き(アーティファクトの保存容量には入りません)、アーティファクトは1〜2日だけ残す(kalio-forever #24:約126 GB のリリースのビルドを90日残していたのを3日に)。
- ダウンロードの要らないジョブの間のファイルの受け渡しは
actions/cacheで。キャッシュは別枠です(VAYA-App #208)。 - なくてもよいアップロードで、通ったビルドを落とさない:レポートやカバレッジのアップロードに
continue-on-error: true(beancounter #1232)、トレースはif: failure()のときだけ上げる。
見分け方
- ジョブがそもそも始まらず、ステップが1つも無い:アカウントの支払いがジョブそのものを止めています(「recent account payments have failed」)。
- 古い実行のログが「HTTP 410: Server Error」になる:期限切れです(期限切れのログ)。
失敗したジョブを IntelliJ IDEA から見るなら
Pipeline Inbox for GitHub Actions Workflows は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。すべてのリポジトリの実行を、ジョブ・ステップと一緒に IDE のツールウィンドウに並べるので、アップロードのステップだけで失敗した実行が目立ちます。いまのブランチの実行はステータスバーに出ます。読むのは無料、失敗したジョブの再実行・キャンセル・ワークフローの実行・デプロイのレビューは Pro(月 US$1.50・30日の無料試用つき)です。
GitHub と GitHub Actions は GitHub, Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは GitHub, Inc.・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:「recent account payments have failed」 · 期限切れのログ · デバッグログ付きでジョブを再実行する · IntelliJ IDEA で使える GitHub Actions のプラグインの比較 · English