@@ -69,31 +69,78 @@ printDF() {
6969 printSeparationLine " ="
7070}
7171
72- removeDir () {
73- dir=${1}
74-
75- local before
76- if [ ! -d " $dir " ]; then
77- echo " ::warning::Directory $dir does not exist, skipping."
78- else
79- before=$( getAvailableSpace)
80- sudo rm -rf " $dir "
81- printSavedSpace " $before " " Removed $dir "
82- fi
83- }
84-
85- removeUnusedDirectories () {
86- local dirs_to_remove=(
72+ removeUnusedFilesAndDirs () {
73+ local to_remove=(
74+ " /etc/mysql"
75+ " /usr/local/aws-sam-cli"
76+ " /usr/local/doc/cmake"
77+ " /usr/local/julia" *
8778 " /usr/local/lib/android"
88- " /usr/share/dotnet"
79+ " /usr/local/share/chromedriver-" *
80+ " /usr/local/share/chromium"
81+ " /usr/local/share/cmake-" *
82+ " /usr/local/share/edge_driver"
83+ " /usr/local/share/gecko_driver"
84+ " /usr/local/share/icons"
85+ " /usr/local/share/vim"
86+ " /usr/local/share/emacs"
87+ " /usr/local/share/powershell"
88+ " /usr/local/share/vcpkg"
89+ " /usr/share/apache-maven-" *
90+ " /usr/share/gradle-" *
91+ " /usr/share/java"
92+ " /usr/share/kotlinc"
93+ " /usr/share/miniconda"
94+ " /usr/share/php"
95+ " /usr/share/ri"
96+ " /usr/share/swift"
97+
98+ # binaries
99+ " /usr/local/bin/azcopy"
100+ " /usr/local/bin/bicep"
101+ " /usr/local/bin/ccmake"
102+ " /usr/local/bin/cmake-" *
103+ " /usr/local/bin/cmake"
104+ " /usr/local/bin/cpack"
105+ " /usr/local/bin/ctest"
106+ " /usr/local/bin/helm"
107+ " /usr/local/bin/kind"
108+ " /usr/local/bin/kustomize"
109+ " /usr/local/bin/minikube"
110+ " /usr/local/bin/packer"
111+ " /usr/local/bin/phpunit"
112+ " /usr/local/bin/pulumi-" *
113+ " /usr/local/bin/pulumi"
114+ " /usr/local/bin/stack"
89115
90116 # Haskell runtime
91117 " /usr/local/.ghcup"
118+
119+ # Azure
120+ " /opt/az"
121+ " /usr/share/az_" *
122+
123+ # Environment variable set by GitHub Actions
124+ " $AGENT_TOOLSDIRECTORY "
92125 )
93126
94- for dir in " ${dirs_to_remove[@]} " ; do
95- removeDir " $dir "
127+ # Filter existing files and directories because:
128+ # - We don't know if GitHub guarantees the existence of these files and
129+ # directories in the future and we don't want CI to fail in case
130+ # a file or directory is removed from the runners.
131+ # - Some files and directories don't exist on ARM runners because they have less software
132+ # installed than x86 runners.
133+ local existing=()
134+ for element in " ${to_remove[@]} " ; do
135+ if [ ! -e " $element " ]; then
136+ echo " ::warning::Directory or file $element does not exist, skipping."
137+ else
138+ existing+=(" $element " )
139+ fi
96140 done
141+
142+ # Remove all files and directories at once to save time.
143+ sudo rm -rf " ${existing[@]} "
97144}
98145
99146execAndMeasureSpaceChange () {
@@ -141,14 +188,6 @@ cleanPackages() {
141188 sudo apt-get clean || echo " ::warning::The command [sudo apt-get clean] failed failed"
142189}
143190
144- # Remove Docker images
145- cleanDocker () {
146- echo " => Removing the following docker images:"
147- sudo docker image ls
148- echo " => Removing docker images..."
149- sudo docker image prune --all --force || true
150- }
151-
152191# Remove Swap storage
153192cleanSwap () {
154193 sudo swapoff -a || true
@@ -164,10 +203,9 @@ printDF "BEFORE CLEAN-UP:"
164203echo " "
165204
166205execAndMeasureSpaceChange cleanPackages " Unused packages"
167- execAndMeasureSpaceChange cleanDocker " Docker images"
168206execAndMeasureSpaceChange cleanSwap " Swap storage"
169207
170- removeUnusedDirectories
208+ execAndMeasureSpaceChange removeUnusedFilesAndDirs " Unused files and directories "
171209
172210# Output saved space statistic
173211echo " "
0 commit comments