ci(#1297): compose the preflight live-socket path instead of mktemp -u
ci/woodpecker/pr/ci Pipeline failed
ci/woodpecker/manual/ci Pipeline was successful

Pipeline 2562: the shell chain now reaches the preflight suite and dies
at 'mktemp: : Invalid argument' — the CI image's mktemp dialect rejects
'mktemp -u /tmp/...XXXXXX.sock' (GNU accepts it locally, which is why
the suite passed on dev hosts only). The path is now composed
(/tmp/mosaic-preflight-$RANDOM-$$.sock): short enough for the 108-byte
AF_UNIX bind limit (a repo-deep path fails with 'path too long',
measured), unique per run, no pre-existing file, cleaned by the existing
trap. Verified locally: suite passes, no /tmp residue.
This commit is contained in:
fargo
2026-08-20 12:51:24 -05:00
parent 2c4adeedf0
commit 1ae7a39183
@@ -149,7 +149,12 @@ assert_not_contains "absent socket must not create a tmux session" "$log1" "TMUX
# the live socket lives at a SHORT path under /tmp (unique per run, cleaned # the live socket lives at a SHORT path under /tmp (unique per run, cleaned
# with the suite). The preflight takes its socket path explicitly, so this # with the suite). The preflight takes its socket path explicitly, so this
# stays fully controlled. # stays fully controlled.
LIVE_SOCK=$(mktemp -u /tmp/mosaic-preflight-XXXXXX.sock) # A real unix socket at a SHORT absolute path (AF_UNIX limit is 108 bytes,
# so the repo-deep SOCK_DIR cannot host it). The name is composed, not
# `mktemp -u`: the CI image's mktemp dialect rejects that invocation
# (pipeline 2562: "mktemp: : Invalid argument"), and no pre-existing file is
# wanted anyway — the holder binds it fresh.
LIVE_SOCK="/tmp/mosaic-preflight-$RANDOM-$$.sock"
trap 'rm -f "$LIVE_SOCK"' EXIT trap 'rm -f "$LIVE_SOCK"' EXIT
rm -f "$SOCK_DIR/live.sock" "$LIVE_SOCK" rm -f "$SOCK_DIR/live.sock" "$LIVE_SOCK"
cat > "$SOCK_DIR/holder.py" <<'PY' cat > "$SOCK_DIR/holder.py" <<'PY'