Skip to content

Commit 3ba9257

Browse files
committed
Enhance disk cleanup script with discovery and additional cleanup
Added comprehensive analysis and additional cleanup targets: Discovery Features (for future optimization): - List top 20 largest installed packages with sizes - Scan /usr for large directories (>500MB) - Scan /opt for large directories - Scan /usr/local for large directories - This helps identify new cleanup opportunities over time Additional Package Removals: - MySQL packages (^mysql-.*) - MongoDB packages (^mongodb-.*) - PostgreSQL packages (^postgresql-.*) - snapd - azure-cli (was missing from package list) Additional Directory Removals: - /usr/share/swift (Swift toolchain) - /usr/local/julia* (Julia language) - /usr/share/kotlinc (Kotlin compiler) - /usr/local/aws-cli (AWS CLI) - /root/.rustup (Rust toolchain) - /root/.cargo (Rust packages) - /imagegeneration (Azure image generation tools) - /var/lib/docker/tmp/* (Docker temp files) - /var/cache/apt/archives/* (APT package cache) - /var/lib/apt/lists/* (APT list cache) - /var/lib/snapd/cache/* (Snap cache) Docker Cleanup Enhancement: - Added --volumes flag to prune volumes too - Remove Docker temp directory Expected Additional Space Freed: - Previous: ~30GB - Now: ~35-40GB (additional 5-10GB from new targets) The discovery output will help identify if GitHub adds new large packages/tools to their runners that we should add to cleanup.
1 parent bcfe8a1 commit 3ba9257

1 file changed

Lines changed: 64 additions & 4 deletions

File tree

.github/scripts/free_disk_space.sh

Lines changed: 64 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,50 @@ echo "==========================================================================
1616
echo "Disk space before cleanup:"
1717
df -h
1818

19+
echo ""
20+
echo "=============================================================================="
21+
echo "Analyzing large packages and directories (for future optimization)..."
22+
echo "=============================================================================="
23+
24+
# List top 20 largest packages
25+
echo ""
26+
echo "Top 20 largest packages:"
27+
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -rn | head -n 20 | awk '{printf " %6.1f MB %s\n", $1/1024, $2}'
28+
29+
# Find large directories in common locations
30+
echo ""
31+
echo "Large directories (>500MB) in /usr:"
32+
du -h -d 2 /usr/ 2>/dev/null | grep -E "^[0-9.]+G|^[5-9][0-9][0-9]M" | sort -rh | head -n 15 || true
33+
34+
echo ""
35+
echo "Large directories (>500MB) in /opt:"
36+
du -h -d 2 /opt/ 2>/dev/null | grep -E "^[0-9.]+G|^[5-9][0-9][0-9]M" | sort -rh | head -n 10 || true
37+
38+
echo ""
39+
echo "Large directories (>500MB) in /usr/local:"
40+
du -h -d 2 /usr/local/ 2>/dev/null | grep -E "^[0-9.]+G|^[5-9][0-9][0-9]M" | sort -rh | head -n 10 || true
41+
42+
echo ""
43+
echo "=============================================================================="
44+
echo "Starting cleanup..."
45+
echo "=============================================================================="
46+
47+
echo ""
1948
echo "Removing large packages..."
2049
sudo apt-get remove -y '^ghc-8.*' '^ghc-9.*' || true
2150
sudo apt-get remove -y '^dotnet-.*' || true
2251
sudo apt-get remove -y '^llvm-.*' || true
2352
sudo apt-get remove -y 'php.*' || true
24-
sudo apt-get remove -y google-cloud-sdk hhvm google-chrome-stable firefox powershell mono-devel || true
53+
sudo apt-get remove -y azure-cli google-cloud-sdk hhvm google-chrome-stable firefox powershell mono-devel || true
2554
sudo apt-get remove -y temurin-* || true
55+
sudo apt-get remove -y '^mysql-.*' || true
56+
sudo apt-get remove -y '^mongodb-.*' || true
57+
sudo apt-get remove -y '^postgresql-.*' || true
58+
sudo apt-get remove -y snapd || true
2659
sudo apt-get autoremove -y
2760
sudo apt-get clean
2861

62+
echo ""
2963
echo "Removing large directories..."
3064
sudo rm -rf /usr/share/dotnet/ || true
3165
sudo rm -rf /usr/local/lib/android || true
@@ -37,11 +71,37 @@ sudo rm -rf /usr/local/.ghcup/ || true
3771
sudo rm -rf /usr/local/share/powershell || true
3872
sudo rm -rf /usr/local/share/chromium || true
3973
sudo rm -rf /usr/local/lib/node_modules || true
74+
sudo rm -rf /usr/share/swift || true
75+
sudo rm -rf /usr/local/julia* || true
76+
sudo rm -rf /usr/share/kotlinc || true
77+
sudo rm -rf /usr/local/aws-cli || true
78+
sudo rm -rf /root/.rustup || true
79+
sudo rm -rf /root/.cargo || true
80+
sudo rm -rf /imagegeneration || true
81+
82+
echo ""
83+
echo "Removing Docker images and build cache..."
84+
sudo docker system prune -af --volumes || true
85+
sudo rm -rf /var/lib/docker/tmp/* || true
86+
87+
echo ""
88+
echo "Removing APT cache..."
89+
sudo rm -rf /var/cache/apt/archives/* || true
90+
sudo rm -rf /var/lib/apt/lists/* || true
4091

41-
echo "Removing Docker images..."
42-
sudo docker system prune -af || true
92+
echo ""
93+
echo "Removing snap cache..."
94+
sudo rm -rf /var/lib/snapd/cache/* || true
95+
96+
echo ""
97+
echo "=============================================================================="
98+
echo "Cleanup completed!"
99+
echo "=============================================================================="
43100

101+
echo ""
44102
echo "Disk space after cleanup:"
45103
df -h
46104

47-
echo "Cleanup completed successfully!"
105+
echo ""
106+
echo "Summary of freed space:"
107+
df -h / | awk 'NR==1 {print " " $0} NR==2 {print " " $0 " (root filesystem)"}'

0 commit comments

Comments
 (0)