GitHub Actions で artifacts にアップロードする際にエラーが出る

2 min読了の目安(約1300字TECH技術記事

問題

GitHub Actions で生成されたものを upload-artifact を利用して artifact にアップロードしていました。
しかし、ある日アップロードするときに以下のようなエラーが発生してアップロードできなくなりました。

Cannot upload artifacts. You may have exceeded your spending limit for storing artifacts with Actions or Packages.

原因

実は artifacts は無料だとアップロード容量に上限があります。
Planによって上限はことなり、また追加購入することで容量を増やすことが可能です。
この容量は1アカウントor1チームで共有されているので、注意が必要です。
参考 : https://help.github.com/en/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-actions
なので実は、上記エラーが出ているときにはGitHubからストレージの追加購入のメールが届いています。

解決方法

ストレージを増やさないで対応する場合は、不要な 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週間にして、それ以外はそのままです。

おわりに

ちょっと日本語で書かれている記事が見当たらなかったので今回書いてみました。
何か参考になれば幸いです。