GitHub Actions で artifacts にアップロードする際にエラーが出る
問題
GitHub Actions で生成されたものを upload-artifact を利用して artifact にアップロードしていました。
しかし、ある日アップロードするときに以下のようなエラーが発生してアップロードできなくなりました。
Cannot upload artifacts. You may have exceeded your spending limit for storing artifacts with Actions or Packages.
原因
実は artifacts は無料プランだとアップロード容量に上限があります。
プランによって上限はことなり、また追加購入することで容量を増やすことが可能です。
この容量は1アカウントor1チームで共有されているので、注意が必要です。
参考 : https://help.github.com/en/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-actions
なので実は、上記エラーが出ているときにはGitHubからストレージの追加購入のメールが届いています。
解決方法
1. 課金してストレージ容量を増やす
ストレージが足りないなら追加購入するのが一番てっとり早いでしょう。
ただ、ストレージを増やしてもすぐ容量を使ってしまったら元も子もありません。
増やす場合でも、このあと説明する方法と合わせて使用するのがいいでしょう。
2. 不要な artifacts を削除する
ストレージを増やさないで対応する場合は、不要な artifacts を消す方法が一番いいでしょう。
artifacts にアップロードされたものは 90日経つと削除される ようです。
ただ、さすがに90日待つことは出来ません。
手動で消す方法もあります。
Actionsから該当のCIを見つけて、下図のように「ごみ箱アイコン」をクリックすることで削除できます。
ただ、量が多いとすべてクリックして消すのは大変です。
そういった場合は artifacts を削除する GitHub Actions を定期実行することで古い生成物を削除することができます。
いくつかユーザーが作成した Action がありますが、私は c-hive/gha-remove-artifacts を利用しました。
他にも似たような Action がありますが、これは GitHub Token の発行が不要で使いやすいと思ったので採用しました。
自分の場合は c-hive/gha-remove-artifacts
の Readme にあるサンプルだと1月と長いので、1週間にして、それ以外はそのままです。
おわりに
ちょっと日本語で書かれている記事が見当たらなかったので今回書いてみました。
何か参考になれば幸いです。
Discussion