はじめに
GitHub Actions (GitHub Pages) を使ったリポジトリをパブリックからプライベートにした直後に次のようなメールが届いた。
メールの内容
You've used 100% of included services for the username account
Shared storage usage
Hello! We wanted to provide you with an update on your usage and spending.
Storage used 528MB of 512MB included
You've used 100% of included services for GitHub Storage (GitHub Actions and Packages)
To continue using Actions & Packages uninterrupted, update your spending limit.
Your usage will reset on May 01, 2022.
Update spending limit
Update spending limit
ボタンをクリックすると、設定ページが表示される。
原因
リポジトリをプライベートに切り替えたことによって利用制限がかかってしまった。
GitHub Actions の利用制限について
- パブリックリポジトリ:無料
- プライベートリポジトリ:ストレージ制限あり
解決策
対象のリポジトリはパブリックでも問題なかったため、パブリックに戻した。しかし、使用容量が変わらないままだった。
そこで、いくつかの方法を試してみた。
Remove artifacts
- removes artifacts that are older than the specified age
- has the option to keep release (tagged) artifacts
- has the option to keep a number of recent artifacts
- respects GitHub's rate limit
使い方は非常に簡単で、リポジトリに .github/workflows
ディレクトリを作成し以下のファイルを追加、push するだけでよい。
remove-old-artifacts.yml
name: Remove old artifacts
on:
schedule:
# Every day at 1am
- cron: '0 1 * * *'
jobs:
remove-old-artifacts:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Remove old artifacts
uses: c-hive/gha-remove-artifacts@v1
with:
age: '1 month' # '<number> <unit>', e.g. 5 days, 2 years, 90 seconds, parsed by Moment.js
# Optional inputs
# skip-tags: true
# skip-recent: 5
purge-artifacts-action
- deleting old artifacts by setting expire duration
delete-old-artifacts.yml
name: 'Delete old artifacts'
on:
schedule:
- cron: '0 * * * *' # every hour
jobs:
delete-artifacts:
runs-on: ubuntu-latest
steps:
- uses: kolpav/purge-artifacts-action@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
expire-in: 7days # Setting this to 0 will delete all artifacts
使い方は先程の Remove artifacts と同じ。今回は expire-in: 0
と設定し、すべてのアーティファクトを削除。
効果
支払制限を設定
アラートが消えない場合に Limit spending に $1
を設定すると解決するという報告もある。