diff --git a/.github/workflows/build_and_test.yaml b/.github/workflows/build_and_test.yaml index 91608ba0eb..cc753eab5e 100644 --- a/.github/workflows/build_and_test.yaml +++ b/.github/workflows/build_and_test.yaml @@ -159,6 +159,7 @@ jobs: steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./tools/github-actions/setup-deps + - uses: ./tools/github-actions/reclaim-storage - name: Download EG Binaries uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.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 cf6da50fbc..5b4c95a19b 100644 --- a/tools/make/tools.mk +++ b/tools/make/tools.mk @@ -54,3 +54,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