CI: GitHub's runners on Ubuntu 26.04

The four jobs on GitHub's own runners move from ubuntu-24.04 and
ubuntu-latest to ubuntu-26.04.

On 26.04 /tmp is held in memory, so the publish job's artifact, 11 GB for
edge, goes to the runner's temp directory on disk instead. nightly-fetch
now checks there is room before it starts and says how much is missing.
This commit is contained in:
Emir Beganovic committed 2026-10-09 22:35:17 +02:00
1 parent f9caa25766
commit 22ef6e12c5
6 files changed
+22 -9

No files matched your search

+9 -2
View File
@@ -8,11 +8,14 @@
# release would outlast the job. An artifact is one zip at a signed address,
# so this asks the API for that address and takes it over 16 connections.
#
# The zip goes to TMPDIR and is deleted once unpacked, so there has to be room
# for the artifact twice: point TMPDIR at a disk, not at a /tmp held in memory.
#
# Needs gh (with GH_TOKEN allowed to read the run's artifacts), curl, aria2c
# and unzip. A run started again keeps the artifacts of its earlier attempts
# under the same name: the newest is the one fetched.
set -euo pipefail
[[ $# -eq 4 ]] || { sed -n '2,13p' "$0" >&2; exit 2; }
[[ $# -eq 4 ]] || { sed -n '2,16p' "$0" >&2; exit 2; }
repo=$1 run=$2 name=$3 out=$4
fail() { echo "nightly-fetch: $*" >&2; exit 1; }
@@ -23,6 +26,11 @@ size=$(gh api "repos/$repo/actions/artifacts/$id" --jq .size_in_bytes)
echo "nightly-fetch: artifact $id, $((size / 1048576)) MiB"
zip=$(mktemp -u "${TMPDIR:-/tmp}/nightly-fetch.XXXXXX.zip")
mkdir -p "$out"
for place in "$(dirname "$zip")" "$out"; do
free=$(( $(df --output=avail -B1 "$place" | tail -n 1) ))
(( free > size )) || fail "$place has $((free / 1048576)) MiB free, the artifact is $((size / 1048576)) MiB"
done
trap 'rm -f "$zip" "$zip.aria2"' EXIT
started=$(date +%s)
# The address is signed for a few minutes. A try that fails asks for a new one
@@ -44,6 +52,5 @@ done
seconds=$(( $(date +%s) - started ))
echo "nightly-fetch: downloaded in $seconds s, $(( size / 1048576 / (seconds > 0 ? seconds : 1) )) MiB/s"
mkdir -p "$out"
unzip -q "$zip" -d "$out"
echo "nightly-fetch: $(find "$out" -type f | wc -l) files in $out"