Commit Graph
15 Commits
Author SHA1 Message Date
vhaudiquet 612826cca8 build: skip the tap update when the tap repo is absent
A token without its repo (or a typo in it) should not turn a release
red; an unreachable repo for a valid token still fails loudly.
2026-10-31 18:39:06 -05:00
vhaudiquet 561a241e09 build: render the tap formula against any tag pin
The tap job matched the literal v0.1.0 url line, so bumping the pin
broke the release render. The pin is now matched generically and
marked in-source as a placeholder the workflow rewrites; the tap
always ships the release tarball with its real sha256.
2026-10-31 18:35:55 -05:00
vhaudiquet d14d8c07bd build: move the entitlements next to the Homebrew formula
All consumers live in packaging already: the formula codesigns at
install, and the CI and release workflows codesign the built binary.
The macOS dir held nothing else.
2026-10-31 18:27:54 -05:00
vhaudiquet a3b4dca2d9 build: sync the Homebrew tap from the release workflow
The tap repo is a publish target like the snap store: the release
workflow rewrites the in-repo formula's url/sha256 for the release
tarball and pushes it to homebrew-ecrou. No token, no update — tags
still release.
2026-10-31 18:21:23 -05:00
vhaudiquet ff73624891 build: add the macOS gate, darwin artifacts, and a Homebrew formula
CI runs fmt/clippy/test plus a real alpine boot on a macos-26 runner
with libkrun from the krun tap; the release workflow ships a signed
darwin-arm64 tarball beside the snaps. The formula installs from the
tap, carries the runtime kegs (libkrun, e2fsprogs, libarchive), and
codesigns the binary with the hypervisor entitlement — Hypervisor
.framework grants VM creation only to entitled binaries on current
macOS, the same requirement krunkit's formula signs for.
2026-10-31 18:10:33 -05:00
vhaudiquet a879631c73 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.
2026-10-30 23:51:37 +01:00
vhaudiquet 4128092be3 fix(ci): spell the quiet flag out in the snap e2e
--quiet is long-only in RunArgs; -q is a clap error and the smoke
step never reached the machine.
2026-10-30 23:43:07 +01:00
vhaudiquet 3618d9857e ci: build the snap and run an apt e2e against it
The snap only got built at tag time, so the pack rotted between
releases; ci now packs it on every change, the same action the
release workflow uses, and boots it twice: an alpine uname check
that proves the machine virtualized under strict confinement, and
apt update + install fastfetch on ubuntu, which is T8 — a real
package install through the TSI proxy, the staged e2fsprogs, and
the exit-code path, with the wall time as the standing
re-measurement of the ln driver's throughput.
2026-10-30 23:27:27 +01:00
vhaudiquet 0347309eea ci: install libarchive for the image build
Same dlopen as the snap stages for: the runner has e2fsprogs but not
the lib, and the first cold pull would fail. The t64 name with a
fallback keeps it honest if the runner image changes base.
2026-10-30 21:22:33 +01:00
vhaudiquet 27b22c60ab ci: build the T6 engine with the blk feature
The T6 run boots from a block device now; an engine without the blk
feature fails the lookup for krun_add_disk and the audit never sees a
machine. Same feature set as the snap ships.
2026-10-30 19:10:59 +01:00
vhaudiquet 2ac01f992a build: adopt the snap version from Cargo.toml
The version: key in snapcraft.yaml was a second number to bump by
hand, and between releases it read whatever it was left at. The ecrou
part now sets its version from [workspace.package] at pull time —
the same value clap reports with --version — so Cargo.toml is the
only place a version lives, and the release workflow stamps only
that. A missed match fails the pack loudly.
2026-10-30 16:19:10 +01:00
vhaudiquet b0ff40dd5d ci: note why the release builds no riscv64 snap
GitHub hosts no riscv64 runner; the platform stays buildable by hand
(snapcraft remote-build).
2026-10-30 03:45:23 +01:00
vhaudiquet 4a9d148a4b ci: run the T6 strace audit on every push
The test has been declared as CI-only since it landed and never ran
anywhere. The job builds the engine from the tag the snap bundles,
takes libkrunfw from the pool, opens /dev/kvm, and runs the ignored
test with ECROU_BIN and LD_LIBRARY_PATH pointed at them.
2026-10-30 03:26:07 +01:00
vhaudiquet 8bdaa7de69 ci: build the arm64 snap in the release workflow
The arm64 runner leg builds that platform natively, where libkrun
compiles and the libkrunfw part picks the arm64 pool .deb on its own.
Both snaps upload as artifacts and publish to stable from one job.
2026-10-30 03:26:07 +01:00
vhaudiquet 7c50b19c09 ci: add testing and snap release workflows
Testing runs the pre-commit trio on pushes to main and PRs.
Releasing builds the snap on plain vX tags and publishes it to the
stable store channel; rc tags fail the version gate and leave the
publish job skipped.
2026-10-29 22:08:06 +01:00