diff --git a/src/ci/docker/run.sh b/src/ci/docker/run.sh index 044f5a8fff322..bff1a2217f26c 100755 --- a/src/ci/docker/run.sh +++ b/src/ci/docker/run.sh @@ -347,6 +347,7 @@ docker \ --env DEPLOY \ --env DEPLOY_ALT \ --env CI \ + --env GIT_DISCOVERY_ACROSS_FILESYSTEM=1 \ --env GITHUB_ACTIONS \ --env GITHUB_REF \ --env GITHUB_STEP_SUMMARY="/checkout/obj/${SUMMARY_FILE}" \ diff --git a/src/ci/scripts/free-disk-space-linux.sh b/src/ci/scripts/free-disk-space-linux.sh index ac3c9cfb28b87..7d87497fc9eca 100755 --- a/src/ci/scripts/free-disk-space-linux.sh +++ b/src/ci/scripts/free-disk-space-linux.sh @@ -247,6 +247,50 @@ cleanSwap() { free -h } +# Try to find a different drive to put our data on so we don't need to run cleanup. +# The availability of the disks we're probing isn't guaranteed, +# so this is opportunistic. +checkAlternative() { + local mountpoint="/mnt" + + # we need ~50GB of space + local space_target_kb=$((50 * 1024 * 1024)) + local available_space_kb=$(df -k "$mountpoint" --output=avail | tail -n 1) + + # ignore-tidy-linelength + local mntopts="defaults,discard,journal_async_commit,barrier=0,noauto_da_alloc,lazytime,data=writeback" + + # GHA has a 2nd disk mounted at /mnt that is almost empty + if mountpoint /mnt && [ "$available_space_kb" -ge "$space_target_kb" ]; then + local blkdev=$(df -k "$mountpoint" --output=source | tail -n 1) + echo "Sufficient space available on $blkdev mounted at $mountpoint" + sudo swapoff -a || true + mkdir ./obj + # remount with O_EATMYDATA while we're at it + sudo umount /mnt + sudo mount $blkdev ./obj -o $mntopts || sudo dmesg | tail -n 20 + sudo chown -R "$USER":"$USER" ./obj + + exit 0 + fi + + # ephemeral NVMe drives on AWS + for dev in /dev/nvme*n1; do + if [ -b "$dev" ] && [ "$(mount | grep "$dev" | wc -l)" -eq 0 ]; then + echo "Found unused block device $dev, creating filesystem" + sudo mkfs.ext4 -E lazy_itable_init=1,lazy_journal_init=1 "$dev" + mkdir ./obj + sudo mount "$dev" ./obj -o $mntopts + sudo chown -R "$USER":"$USER" ./obj + + exit 0 + fi + done +} + + +checkAlternative + # Display initial disk space stats AVAILABLE_INITIAL=$(getAvailableSpace)