about summary refs log tree commit diff
path: root/src/ci/scripts
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2024-08-31 03:54:22 +0000
committerbors <bors@rust-lang.org>2024-08-31 03:54:22 +0000
commitfa72f0763de6bc1596208fc1419883ce5aea0de4 (patch)
tree1051615ddd040801cbe1f67d82ca3c1482f2f2bf /src/ci/scripts
parent0d634185dfddefe09047881175f35c65d68dcff1 (diff)
parent8da1c0049a550a7882436008ec5d02ff73024a4c (diff)
downloadrust-fa72f0763de6bc1596208fc1419883ce5aea0de4.tar.gz
rust-fa72f0763de6bc1596208fc1419883ce5aea0de4.zip
Auto merge of #129797 - workingjubilee:cleanup-apple-ci, r=workingjubilee
Try to reduce space usage in dist CI

We have had recurrent CI problems as a result of GitHub adding a new version of Xcode to its runners[^0], which has consumed ~40GB of space which served as padding. Try to reduce the number of Xcodes on our systems, because we only use Xcode 14 in actual practice. Also, try to move files instead of pointlessly copy them when we're at the end of the job.

I could not resist addressing a few shellcheck lints while I was at it.

[^0]: https://github.com/actions/runner-images/issues/10511
Diffstat (limited to 'src/ci/scripts')
-rwxr-xr-xsrc/ci/scripts/dump-environment.sh4
-rwxr-xr-xsrc/ci/scripts/select-xcode.sh17
-rwxr-xr-xsrc/ci/scripts/upload-artifacts.sh10
3 files changed, 23 insertions, 8 deletions
diff --git a/src/ci/scripts/dump-environment.sh b/src/ci/scripts/dump-environment.sh
index 812690181e9..7afaa472f6e 100755
--- a/src/ci/scripts/dump-environment.sh
+++ b/src/ci/scripts/dump-environment.sh
@@ -15,9 +15,7 @@ df -h
 echo
 
 echo "biggest files in the working dir:"
-set +o pipefail
-du . | sort -nr | head -n100
-set -o pipefail
+du . | sort -n | tail -n100 | sort -nr # because piping sort to head gives a broken pipe
 echo
 
 if isMacOS
diff --git a/src/ci/scripts/select-xcode.sh b/src/ci/scripts/select-xcode.sh
index 569c4a4136d..d635d438472 100755
--- a/src/ci/scripts/select-xcode.sh
+++ b/src/ci/scripts/select-xcode.sh
@@ -1,5 +1,6 @@
 #!/bin/bash
 # This script selects the Xcode instance to use.
+# It also tries to do some cleanup in CI jobs of unused Xcodes.
 
 set -euo pipefail
 IFS=$'\n\t'
@@ -7,5 +8,21 @@ IFS=$'\n\t'
 source "$(cd "$(dirname "$0")" && pwd)/../shared.sh"
 
 if isMacOS; then
+    # This additional step is to try to remove an Xcode we aren't using because each one is HUGE
+    old_xcode="$(xcode-select --print-path)"
+    old_xcode="${old_xcode%/*}" # pop a dir
+    old_xcode="${old_xcode%/*}" # twice
+    if [[ $old_xcode =~ $SELECT_XCODE ]]; then
+        echo "xcode-select.sh's brutal hack may not be necessary?"
+        exit 1
+    elif [[ $SELECT_XCODE =~ "16" ]]; then
+        echo "Using Xcode 16? Please fix xcode-select.sh"
+        exit 1
+    fi
+    if [ $CI ]; then # just in case someone sources this on their real computer
+        sudo rm -rf "${old_xcode}"
+        xcode_16="${old_xcode%/*}/Xcode-16.0.0.app"
+        sudo rm -rf "${xcode_16}"
+    fi
     sudo xcode-select -s "${SELECT_XCODE}"
 fi
diff --git a/src/ci/scripts/upload-artifacts.sh b/src/ci/scripts/upload-artifacts.sh
index c9c85ec20b4..61c187fa77c 100755
--- a/src/ci/scripts/upload-artifacts.sh
+++ b/src/ci/scripts/upload-artifacts.sh
@@ -19,18 +19,18 @@ fi
 if [[ "${DEPLOY-0}" -eq "1" ]] || [[ "${DEPLOY_ALT-0}" -eq "1" ]]; then
     dist_dir="${build_dir}/dist"
     rm -rf "${dist_dir}/doc"
-    cp -r "${dist_dir}"/* "${upload_dir}"
+    mv "${dist_dir}"/* "${upload_dir}"
 fi
 
 # CPU usage statistics.
-cp build/cpu-usage.csv "${upload_dir}/cpu-${CI_JOB_NAME}.csv"
+mv build/cpu-usage.csv "${upload_dir}/cpu-${CI_JOB_NAME}.csv"
 
 # Build metrics generated by x.py.
-cp "${build_dir}/metrics.json" "${upload_dir}/metrics-${CI_JOB_NAME}.json"
+mv "${build_dir}/metrics.json" "${upload_dir}/metrics-${CI_JOB_NAME}.json"
 
 # Toolstate data.
 if [[ -n "${DEPLOY_TOOLSTATES_JSON+x}" ]]; then
-    cp /tmp/toolstate/toolstates.json "${upload_dir}/${DEPLOY_TOOLSTATES_JSON}"
+    mv /tmp/toolstate/toolstates.json "${upload_dir}/${DEPLOY_TOOLSTATES_JSON}"
 fi
 
 echo "Files that will be uploaded:"
@@ -55,7 +55,7 @@ then
   echo "# CI artifacts" >> "${GITHUB_STEP_SUMMARY}"
 
   for filename in "${upload_dir}"/*.xz; do
-    filename=`basename "${filename}"`
+    filename=$(basename "${filename}")
     echo "- [${filename}](${access_url}/${filename})" >> "${GITHUB_STEP_SUMMARY}"
   done
 fi