11#! /bin/bash
2+ set -euo pipefail
23
34# Free disk space on Linux GitHub action runners
45# Script inspired by https://github.com/jlumbroso/free-disk-space
@@ -58,11 +59,28 @@ removeDir() {
5859 dir=${1}
5960
6061 local before
61- before=$( getAvailableSpace)
62+ if [ ! -d " $dir " ]; then
63+ echo " ::warning::Directory $dir does not exist, skipping."
64+ else
65+ before=$( getAvailableSpace)
66+ sudo rm -rf " $dir "
67+ printSavedSpace " $before " " Removed $dir "
68+ fi
69+ }
70+
71+ removeUnusedDirectories () {
72+ local dirs_to_remove=(
73+ " /usr/local/lib/android"
74+ " /usr/share/dotnet"
6275
63- sudo rm -rf " $dir " || true
76+ # Haskell runtime
77+ " /opt/ghc"
78+ " /usr/local/.ghcup"
79+ )
6480
65- printSavedSpace " $before " " $dir "
81+ for dir in " ${dirs_to_remove[@]} " ; do
82+ removeDir " $dir "
83+ done
6684}
6785
6886execAndMeasureSpaceChange () {
@@ -101,9 +119,9 @@ cleanPackages() {
101119
102120# Remove Docker images
103121cleanDocker () {
104- echo " Removing the following docker images:"
122+ echo " => Removing the following docker images:"
105123 sudo docker image ls
106- echo " Removing docker images..."
124+ echo " => Removing docker images..."
107125 sudo docker image prune --all --force || true
108126}
109127
@@ -121,17 +139,12 @@ AVAILABLE_INITIAL=$(getAvailableSpace)
121139printDF " BEFORE CLEAN-UP:"
122140echo " "
123141
124- removeDir /usr/local/lib/android
125- removeDir /usr/share/dotnet
126-
127- # Haskell runtime
128- removeDir /opt/ghc
129- removeDir /usr/local/.ghcup
130-
131- execAndMeasureSpaceChange cleanPackages " Large misc. packages"
142+ execAndMeasureSpaceChange cleanPackages " Unused packages"
132143execAndMeasureSpaceChange cleanDocker " Docker images"
133144execAndMeasureSpaceChange cleanSwap " Swap storage"
134145
146+ removeUnusedDirectories
147+
135148# Output saved space statistic
136149echo " "
137150printDF " AFTER CLEAN-UP:"
0 commit comments