From a879631c730618833239bce61da928f5c33c0a5f Mon Sep 17 00:00:00 2001 From: Valentin Haudiquet Date: Fri, 30 Oct 2026 23:51:37 +0100 Subject: [PATCH] ci: keep the fastfetch receipt greppable The payload's stdout is a serial console, so fastfetch reads a tty and decorates its output with cursor escapes; the ^OS: anchor matched nothing and would have failed a green run. --pipe --logo none prints a plain key-value list, and a sed strips anything left before the grep. SPEC records the first measured apt wall time: 24 s cache-warm, boot included. --- .github/workflows/ci.yml | 11 +++++++++-- SPEC.md | 16 ++++++++++------ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 75ee6da..ff6a2ce 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -151,6 +151,13 @@ jobs: - name: apt update && install fastfetch run: | set -euo pipefail + # --pipe --logo none: the payload's stdout is a serial + # console, which fastfetch reads as a tty and decorates with + # cursor escapes (a first local run grepped nothing); plain + # output keeps the receipt readable. timeout 35m ecrou run --quiet -e DEBIAN_FRONTEND=noninteractive ubuntu -- \ - "apt update && apt install -y fastfetch && fastfetch" | tee /tmp/e2e.log - grep -E "^OS:" /tmp/e2e.log + "apt update && apt install -y fastfetch && fastfetch --pipe --logo none" \ + | tee /tmp/e2e.log + # Insurance, not the primary check: strip any escape + # sequences before anchoring on the fastfetch key. + sed -e 's/\x1b\[[0-9;?]*[A-Za-z]//g' /tmp/e2e.log | grep -E "^OS:" diff --git a/SPEC.md b/SPEC.md index 7fadc74..01b7ab4 100644 --- a/SPEC.md +++ b/SPEC.md @@ -271,12 +271,16 @@ stop: included; a published port is reachable from the host. - **T8, snap e2e.** CI builds the snap and runs `ecrou run --quiet -e DEBIAN_FRONTEND=noninteractive ubuntu -- "apt update && apt install - -y fastfetch && fastfetch"` inside it: strict confinement, KVM - through the plug, the staged e2fsprogs, apt across the TSI proxy, - and the payload's exit code back through the control file. A boot - of alpine (`uname -r` differing from the host's) runs before it so - a broken environment fails fast. The apt wall time is the standing - re-measurement of the ln driver's throughput. + -y fastfetch && fastfetch --pipe --logo none"` inside it: strict + confinement, KVM through the plug, the staged e2fsprogs, apt across + the TSI proxy, and the payload's exit code back through the control + file. `--pipe --logo none` keeps the receipt greppable; the console + is a serial port and fastfetch decorates a tty with cursor escapes. + A boot of alpine (`uname -r` differing from the host's) runs before + it so a broken environment fails fast. The apt wall time is the + standing re-measurement of the ln driver's throughput. First data + point: 24 s end to end, boot and apt included, cache-warm (snap + 0.1.0 engine, October 2026). ## Snap packaging