@@ -4,9 +4,10 @@ set -euo pipefail
4
4
# Free disk space on Linux GitHub action runners
5
5
# Script inspired by https://github.com/jlumbroso/free-disk-space
6
6
7
- # When updating to a new ubuntu version:
7
+ # When updating to a new ubuntu version (e.g. from ubuntu-24.04) :
8
8
# - Check that there are no docker images preinstalled with `docker image ls`
9
9
# - Check that there are no big packages preinstalled that we aren't using
10
+ # - Check that all directores we are removing are still present (look at the warnings)
10
11
11
12
# print a line of the specified character
12
13
printSeparationLine () {
@@ -63,24 +64,62 @@ printDF() {
63
64
printSeparationLine " ="
64
65
}
65
66
66
- removeDir () {
67
- dir =${1}
67
+ removeRecursive () {
68
+ element =${1}
68
69
69
70
local before
70
- if [ ! -d " $dir " ]; then
71
- echo " ::warning::Directory $dir does not exist, skipping."
71
+ if [ ! -e " $element " ]; then
72
+ echo " ::warning::Directory or file $element does not exist, skipping."
72
73
else
73
74
before=$( getAvailableSpace)
74
- sudo rm -rf " $dir "
75
- printSavedSpace " $before " " Removed $dir "
75
+ sudo rm -rf " $element "
76
+ printSavedSpace " $before " " Removed $element "
76
77
fi
77
78
}
78
79
79
- removeUnusedDirectories () {
80
- local dirs_to_remove=(
81
- " /usr/local/lib/android"
80
+ removeUnusedDirsAndFiles () {
81
+ local to_remove=(
82
82
" /etc/mysql"
83
+ " /usr/local/aws-sam-cli"
84
+ " /usr/local/doc/cmake"
85
+ " /usr/local/julia" *
86
+ " /usr/local/lib/android"
87
+ " /usr/local/share/chromedriver-" *
88
+ " /usr/local/share/chromium"
89
+ " /usr/local/share/cmake-" *
90
+ " /usr/local/share/edge_driver"
91
+ " /usr/local/share/gecko_driver"
92
+ " /usr/local/share/icons"
93
+ " /usr/local/share/vim"
94
+ " /usr/local/share/emacs"
95
+ " /usr/local/share/powershell"
96
+ " /usr/local/share/vcpkg"
97
+ " /usr/share/apache-maven-" *
98
+ " /usr/share/gradle-" *
99
+ " /usr/share/java"
100
+ " /usr/share/kotlinc"
101
+ " /usr/share/miniconda"
83
102
" /usr/share/php"
103
+ " /usr/share/ri"
104
+ " /usr/share/swift"
105
+
106
+ # binaries
107
+ " /usr/local/bin/azcopy"
108
+ " /usr/local/bin/bicep"
109
+ " /usr/local/bin/ccmake"
110
+ " /usr/local/bin/cmake-" *
111
+ " /usr/local/bin/cmake"
112
+ " /usr/local/bin/cpack"
113
+ " /usr/local/bin/ctest"
114
+ " /usr/local/bin/helm"
115
+ " /usr/local/bin/kind"
116
+ " /usr/local/bin/kustomize"
117
+ " /usr/local/bin/minikube"
118
+ " /usr/local/bin/packer"
119
+ " /usr/local/bin/phpunit"
120
+ " /usr/local/bin/pulumi-" *
121
+ " /usr/local/bin/pulumi"
122
+ " /usr/local/bin/stack"
84
123
85
124
# Haskell runtime
86
125
" /usr/local/.ghcup"
@@ -93,11 +132,27 @@ removeUnusedDirectories() {
93
132
" $AGENT_TOOLSDIRECTORY "
94
133
)
95
134
96
- for dir in " ${dirs_to_remove [@]} " ; do
97
- removeDir " $dir "
135
+ for element in " ${to_remove [@]} " ; do
136
+ removeRecursive " $element "
98
137
done
99
138
}
100
139
140
+ removeNodeModules () {
141
+ sudo npm uninstall -g \
142
+ " @bazel/bazelisk" \
143
+ " bazel" \
144
+ " grunt" \
145
+ " gulp" \
146
+ " lerna" \
147
+ " n" \
148
+ " newman" \
149
+ " parcel" \
150
+ " typescript" \
151
+ " webpack-cli" \
152
+ " webpack" \
153
+ " yarn"
154
+ }
155
+
101
156
execAndMeasureSpaceChange () {
102
157
local operation=${1} # Function to execute
103
158
local title=${2}
@@ -159,6 +214,10 @@ cleanSwap() {
159
214
free -h
160
215
}
161
216
217
+ removePythonPackages () {
218
+ sudo pipx uninstall ansible-core
219
+ }
220
+
162
221
# Display initial disk space stats
163
222
164
223
AVAILABLE_INITIAL=$( getAvailableSpace)
@@ -168,8 +227,10 @@ echo ""
168
227
169
228
execAndMeasureSpaceChange cleanPackages " Unused packages"
170
229
execAndMeasureSpaceChange cleanSwap " Swap storage"
230
+ execAndMeasureSpaceChange removeNodeModules " Node modules"
231
+ execAndMeasureSpaceChange removePythonPackages " Python Packages"
171
232
172
- removeUnusedDirectories
233
+ removeUnusedDirsAndFiles
173
234
174
235
# Output saved space statistic
175
236
echo " "
0 commit comments