blob: 1111243e6a1b0344cc3737e7cd64fb5d970093b8 [file]
#!/usr/bin/env bash
set -u
free_mb() { df -BM / | awk 'NR==2 {print $4}' | tr -d 'M'; }
clean() {
local label="$1" path="$2"
local before after t0
if [ -z "$path" ]; then
printf "%s %-13s (path not set, skipping)\n" "$(date +%T)" "$label"
return
fi
before=$(free_mb)
t0=$SECONDS
# shellcheck disable=SC2086 # intentional word-split for globs (julia*)
sudo rm -rf -- $path
after=$(free_mb)
printf "%s %-13s %3ds %3sG -> %3sG free (freed %sM)\n" \
"$(date +%T)" "$label" "$((SECONDS - t0))" \
"$((before / 1024))" "$((after / 1024))" "$((after - before))"
}
echo "=== Disk before cleanup ==="
df -h /
echo
echo "=== Per-step delete (time + free-space delta) ==="
# Pre-installed language toolchains
clean ghc /opt/ghc
clean ghcup /usr/local/.ghcup
clean boost /usr/local/share/boost
clean swift /usr/share/swift
clean julia '/usr/local/julia*'
clean gcloud-sdk /usr/lib/google-cloud-sdk
clean codeql /opt/hostedtoolcache/CodeQL
# App SDKs that Selenium has no binding for
clean android /usr/local/lib/android
clean dotnet /usr/share/dotnet
clean graalvm /usr/local/graalvm
clean powershell /usr/local/share/powershell
# WebDriver binaries (Selenium tests use bazel-pinned drivers)
clean chromedriver "${CHROMEWEBDRIVER:-}"
clean edgedriver "${EDGEWEBDRIVER:-}"
clean geckodriver "${GECKOWEBDRIVER:-}"
# Pre-installed browsers (Selenium tests use bazel-pinned or SM-downloaded browsers)
clean chrome /opt/google/chrome
clean firefox /opt/firefox
clean msedge /opt/microsoft/msedge
# Docker images pre-pulled by the runner image
before=$(free_mb); t0=$SECONDS
docker image prune -af >/dev/null 2>&1 || true
after=$(free_mb)
printf "%s %-13s %3ds %3sG -> %3sG free (freed %sM)\n" \
"$(date +%T)" "docker-images" "$((SECONDS - t0))" \
"$((before / 1024))" "$((after / 1024))" "$((after - before))"
sync
echo
echo "=== Disk after cleanup ==="
df -h /