鳥頭

GitHub ActionsとPackagesのストレージ使用状況を調べる

に投稿

ある日、「[GitHub] You’ve used 100% of included services for the InkoHX account」という件名で、GitHub ActionsとPackages合わせてストレージの使用率が100%に到達したという通知メールを受け取りました。
実は100%に到達する前にも、何度かアラートは受け取っていましたが対処するのを忘れてました。私が悪い

ただ、どのリポジトリが原因でストレージを消費しているのか全く心当たりがないので、GitHubのプランと使用状況ページを確認してみましたが…

スクリーンショット

このように、ストレージでどれくらい容量を消費しているかは書いてありますが、どのリポジトリでどれほど消費しているのかについては一切書いていないんですよね。

使用状況はダウンロードしないと見れない

GitHubのプランと使用状況ページにアクセスし、Usage this monthという文字の右にあるGet usage reportというボタンをクリックします。
すると、過去何日分のデータを取得するのかを選択させられるので、過去7日を選択してSend report to emailをクリックしましょう。

メールボックスを確認すると、「[GitHub] Your usage report is ready to download」という件名でメールが届くのでダウンロードリンクをクリックしてください。CSVファイルが手に入ります。

CSVからデータを読み取る

CSVなのでテキストエディタで見るのも手ですが、スプレッドシート等を使って見たほうが見やすいです。

Productという列でShared Storageが格納されている行に注目してみましょう。

DateProductSKUQuantityUnit TypePrice Per Unit ($)MultiplierOwnerRepository Slug
2024-12-08Shared StorageShared Storage4.3201gb-day0.0081InkoHXexample-project

私の場合表のようなデータを見つけたので、詳しく見てみましょう。
Unit Typegb-dayと書いてあります。なので、Quantity4.3201という値は4.3GBだということがわかります。
次に、Repository Slugを見てみるとexample-projectと書いてあります。

つまり、私の場合、1つのリポジトリで4.3GBのストレージを消費していたということになります。
一回の実行につき、数GBあるファイルをArtifactとしてアップロードしていたのが原因でした。

対処法

  1. Artifactの有効期間を短くする
  2. 既存のArtifactを消す

Artifactの有効期間を短くする

リポジトリの設定からActions → Generalに進んでもらうと、Artifact and log retentionという欄があります。
デフォルトは有効期間が90日に設定されていますが、これを短くすればするほど古いArtifactとログがすぐ削除されていくため、容量削減に繋がります。

ただ、ログも一緒に消えるのでArtifactだけの有効期限を短くしたいって人には合わなそうです。

既存のArtifactを消す

大量にある GitHub Actions の Artifact を頑張って消す方法という記事によると

Retention Period は、設定後にアップロードされるファイルにのみ適用されるため、アップロード済みの Artifact はそのままになります。 アップロード時から(デフォルト設定の) 90 日以上経てば消えてくれますが、その間はストレージに料金がかかるので、古いファイルは消す必要があります。

ところが、 GitHub Actions には Artifact をまとめて消す方法というのがなく、削除するには管理画面からポチポチ手動で消していくか、API 経由で消していくかの二択しかありません。

とのことらしく、消すにはc-hive/gha-remove-artifactsといったActionを使う必要があるらしいです。詳細は記事をご覧ください。

見た感じそのアクションを使えば、Artifactの有効期限は短くしたいけど、ログの有効期限は短くしたくないという人のニーズも満たせそうです。