初めに
GitHub Actionsを使ってビルドをする際に内容によっては以下のようなエラーが出ることがあります。
~~~ no space left on device
これは提供されているディスクサイズを超えて使用しようとするとエラーになります。そのため、よりディスクサイズを増やして使うために不要なものを削除していきます。
今回検証に使ったRepositoryは以下になります
前提
今回は以下の記事の内容の UnityのWebビルドを行い、firebase hostingにCLIでデプロイするワークフローを前提にしています。そのため、ワークフローによって削除する内容は調節をしてください
開発環境
- GitHub Actions(Ubunts 24.02)
削除対象
今回削除したものは以下になります
1. 直接削除されるファイル・ディレクトリ
- スワップファイル: /swapfile
- .NET SDK: /usr/share/dotnet
- Haskell (GHC と GHCup): /opt/ghc, /usr/local/.ghcup
- Android SDK/NDK: /usr/local/lib/android
- CodeQL ツールキャッシュ: /opt/hostedtoolcache/CodeQL
- Swift: /usr/share/swift
- Go (本体とツールキャッシュ): /usr/local/go, /opt/hostedtoolcache/go
- Java (OpenJDK インストール): /usr/lib/jvm/ 内の全ファイル・ディレクトリ
- Ruby (ツールキャッシュとRVM): /opt/hostedtoolcache/Ruby, /home/runner/.rvm
- Python ツールキャッシュ: /opt/hostedtoolcache/Python
2. apt-get remove により削除されるパッケージ
- Google Cloud SDK / CLI: google-cloud-cli, google-cloud-sdk (もしインストールされていれば)
- PHP: php* に一致する全パッケージ (例: php8.1-cli, php8.1-common など)
- Web ブラウザ: firefox, google-chrome-stable
3. apt-get autoremove により削除されるパッケージ
- 上記 apt-get remove で削除されたパッケージに依存しており、他に必要とされなくなったパッケージ
4. apt-get clean により削除されるもの
- ダウンロード済みのaptパッケージファイル
5. docker system prune --volumes -a -f により削除されるDockerリソース
- 停止中の全てのDockerコンテナ
- 使用されていない全てのDockerネットワーク
- どのコンテナからも参照されていない全てのDockerイメージ (未使用イメージ)
- 未使用の全てのDockerボリューム
- Dockerビルドキャッシュ
ディスクサイズ削除Jobの定義
使用するワークフローの一番初めに以下を追加することで、27GBの空き容量を増やすことができます
- name: Maximize Runner Disk Space
run: |
echo "Initial disk space:"
df -h
echo "Removing swap file..."
sudo swapoff -a
sudo rm -f /swapfile
echo "Removing large pre-installed tools..."
# .NET SDKs
sudo rm -rf /usr/share/dotnet
# Haskell (ghc)
sudo rm -rf /opt/ghc /usr/local/.ghcup
# Android SDK/NDK
sudo rm -rf /usr/local/lib/android
# CodeQL
sudo rm -rf /opt/hostedtoolcache/CodeQL
# Swift
sudo rm -rf /usr/share/swift
# Go
sudo rm -rf /usr/local/go /opt/hostedtoolcache/go
# Java (OpenJDK)
sudo rm -rf /usr/lib/jvm/*
# Ruby tool cache and rvm
sudo rm -rf /opt/hostedtoolcache/Ruby /home/runner/.rvm
# Python tool cache (Leaving system Python intact, removing cached versions)
sudo rm -rf /opt/hostedtoolcache/Python
echo "Removing packages via apt..."
# Google Cloud SDK (Firebase CLIとは別)
sudo apt-get remove -y google-cloud-cli google-cloud-sdk || echo "gcloud not found or removal failed"
# PHP
sudo apt-get remove -y php\* || echo "PHP not found or removal failed"
# Browsers
sudo apt-get remove -y firefox google-chrome-stable || echo "Browsers not found or removal failed"
echo "Cleaning apt cache..."
sudo apt-get autoremove -y
sudo apt-get clean
echo "Performing extensive Docker system prune..."
# Keep Docker itself, but prune unused resources
sudo docker system prune --volumes -a -f
echo "Final disk space:"
df -h
結果として以下になります
| 状態 | サイズ | 使用量 | 空き容量 | 使用率 | 解放された容量 |
|---|---|---|---|---|---|
| 初期状態 | 72 GB | 47 GB | 25 GB | 66% | - |
| 削除後 | 72 GB | 20 GB | 53 GB | 27% | 27 GB |