1
1
#! /bin/bash
2
+ set -euo pipefail
2
3
3
4
# Free disk space on Linux GitHub action runners
4
5
# Script inspired by https://github.com/jlumbroso/free-disk-space
@@ -58,11 +59,28 @@ removeDir() {
58
59
dir=${1}
59
60
60
61
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"
62
75
63
- sudo rm -rf " $dir " || true
76
+ # Haskell runtime
77
+ " /opt/ghc"
78
+ " /usr/local/.ghcup"
79
+ )
64
80
65
- printSavedSpace " $before " " $dir "
81
+ for dir in " ${dirs_to_remove[@]} " ; do
82
+ removeDir " $dir "
83
+ done
66
84
}
67
85
68
86
execAndMeasureSpaceChange () {
@@ -101,9 +119,9 @@ cleanPackages() {
101
119
102
120
# Remove Docker images
103
121
cleanDocker () {
104
- echo " Removing the following docker images:"
122
+ echo " => Removing the following docker images:"
105
123
sudo docker image ls
106
- echo " Removing docker images..."
124
+ echo " => Removing docker images..."
107
125
sudo docker image prune --all --force || true
108
126
}
109
127
@@ -121,17 +139,12 @@ AVAILABLE_INITIAL=$(getAvailableSpace)
121
139
printDF " BEFORE CLEAN-UP:"
122
140
echo " "
123
141
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"
132
143
execAndMeasureSpaceChange cleanDocker " Docker images"
133
144
execAndMeasureSpaceChange cleanSwap " Swap storage"
134
145
146
+ removeUnusedDirectories
147
+
135
148
# Output saved space statistic
136
149
echo " "
137
150
printDF " AFTER CLEAN-UP:"
0 commit comments