diff --git a/.github/workflows/build_and_test.yaml b/.github/workflows/build_and_test.yaml index 8c30b89fbb..c1591c9b88 100644 --- a/.github/workflows/build_and_test.yaml +++ b/.github/workflows/build_and_test.yaml @@ -208,6 +208,7 @@ jobs: steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: ./tools/github-actions/setup-deps + - uses: ./tools/github-actions/reclaim-storage - name: Download EG Binaries uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 diff --git a/tools/github-actions/reclaim-storage/action.yaml b/tools/github-actions/reclaim-storage/action.yaml new file mode 100644 index 0000000000..6c76cbd4f2 --- /dev/null +++ b/tools/github-actions/reclaim-storage/action.yaml @@ -0,0 +1,8 @@ +name: reclaim-storage +description: Remove unnecessary packages and artifacts from GitHub Actions Runner + +runs: + using: composite + steps: + - shell: bash + run: make reclaim-storage diff --git a/tools/hack/reclaim-storage.sh b/tools/hack/reclaim-storage.sh new file mode 100644 index 0000000000..8747de1307 --- /dev/null +++ b/tools/hack/reclaim-storage.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +set -euo pipefail + +log() { echo "==> $*"; } + +log "Initial disk usage:" +df -h || true + +# Remove large, unused language/tool runtimes +TO_DELETE=( + /usr/local/lib/android + /usr/share/dotnet + /opt/ghc + /usr/local/.ghcup + /usr/share/swift +) + +for path in "${TO_DELETE[@]}"; do + if [ -d "$path" ]; then + log "Removing $path" + sudo rm -rf "$path" + fi +done + +log "Removing large packages..." +EXTRA_PKGS="azure-cli google-chrome-stable firefox powershell mono-devel libgl1-mesa-dri google-cloud-sdk google-cloud-cli" + +sudo apt-get remove -y "$EXTRA_PKGS" --fix-missing || true +sudo apt-get autoremove -y || true +sudo apt-get clean || true + +# Swap removal +if [ -f /mnt/swapfile ]; then + log "Disabling and removing swapfile" + sudo swapoff -a || true + sudo rm -f /mnt/swapfile || true +fi + +log "Final disk usage:" +df -h || true + +log "Completed disk space reclamation." diff --git a/tools/make/tools.mk b/tools/make/tools.mk index e1bb44c021..69c4ab09f7 100644 --- a/tools/make/tools.mk +++ b/tools/make/tools.mk @@ -55,3 +55,7 @@ tools.clean: # Remove all tools .PHONY: clean clean: ## Remove all files that are created during builds. clean: tools.clean + +.PHONY: reclaim-storage +reclaim-storage: ## Removes unnecessary packages and artifacts from GitHub Actions Runner + bash ./tools/hack/reclaim-storage.sh