ci(freebsd): add build-freebsd job to reusable build workflow - #1422
ci(freebsd): add build-freebsd job to reusable build workflow#1422PR9000 wants to merge 3 commits into
Conversation
Adds FreeBSD 15.1 and 14.4 x86_64 build matrix legs. The aarch64 leg remains commented out due to npm lightningcss missing prebuilt binaries on freebsd-arm64. Signed-off-by: Pedro Ramos <131530838+pr9000@users.noreply.github.com>
|
Thanks for opening this — it has been seen, and it is queued. This note is automated, but it is not a brush-off: it exists so you know where your PR stands instead of having to guess from silence. Current review status: working through a backlog. What that means for this PR, concretely:
Things that will genuinely speed it up whenever review does happen:
If this fixes a bug, a reproduction we can run is worth more than a description of the symptom. Thanks for contributing, and sorry in advance for the wait. |
- scripts/env.sh: add freebsd* OS detection + MAKE=gmake (BSD make doesn't understand GNU Makefile.cbm syntax; all other platforms use 'make') - scripts/build.sh: use $MAKE instead of hard-coded 'make' (2 call sites) - scripts/package-release.sh: add 'freebsd' to GOOS case validation + usage - .github/workflows/_build.yml: replace inline gmake calls with scripts/build.sh, following venue-parity contract Venue parity contract requires: provision in prepare:, call canonical scripts/ in run:. Inline gmake violated this — now FreeBSD follows the same pattern as Linux/macOS/Windows. Closes: PR DeusData#1422 venue-parity contract violation
- scripts/env.sh: add freebsd* OS detection + MAKE=gmake (BSD make doesn't understand GNU Makefile.cbm syntax; all other platforms use 'make') - scripts/build.sh: use $MAKE instead of hard-coded 'make' (2 call sites) - scripts/package-release.sh: add 'freebsd' to GOOS case validation + usage - .github/workflows/_build.yml: replace inline gmake calls with scripts/build.sh, following venue-parity contract Venue parity contract requires: provision in prepare:, call canonical scripts/ in run:. Inline gmake violated this — now FreeBSD follows the same pattern as Linux/macOS/Windows. Closes: PR DeusData#1422 venue-parity contract violation
- scripts/env.sh: add freebsd* OS detection + MAKE=gmake (BSD make doesn't understand GNU Makefile.cbm syntax; all other platforms use 'make') - scripts/build.sh: use $MAKE instead of hard-coded 'make' (2 call sites) - scripts/package-release.sh: add 'freebsd' to GOOS case validation + usage - .github/workflows/_build.yml: replace inline gmake calls with scripts/build.sh, following venue-parity contract Venue parity contract requires: provision in prepare:, call canonical scripts/ in run:. Inline gmake violated this — now FreeBSD follows the same pattern as Linux/macOS/Windows. Closes: PR DeusData#1422 venue-parity contract violation Signed-off-by: Pedro Ramos <131530838+pr9000@users.noreply.github.com>
06e362a to
e78f9e2
Compare
- scripts/env.sh: add freebsd* OS detection + MAKE=gmake (BSD make doesn't understand GNU Makefile.cbm syntax; all other platforms use 'make') - scripts/build.sh: use $MAKE instead of hard-coded 'make' (2 call sites) - scripts/package-release.sh: add 'freebsd' to GOOS case validation + usage - .github/workflows/_build.yml: replace inline gmake calls with scripts/build.sh, following venue-parity contract Venue parity contract requires: provision in prepare:, call canonical scripts/ in run:. Inline gmake violated this — now FreeBSD follows the same pattern as Linux/macOS/Windows. Closes: PR DeusData#1422 venue-parity contract violation Signed-off-by: Pedro Ramos <131530838+pr9000@users.noreply.github.com>
Security audit (scripts/security-audit.sh Layer 1) blocks unpinned GitHub Actions. Pin vmactions/freebsd-vm@v1 to its release commit SHA. Ref: scripts/security-audit.sh BLOCKED check Signed-off-by: Pedro Ramos <131530838+pr9000@users.noreply.github.com>
- scripts/env.sh: add freebsd* OS detection + MAKE=gmake (BSD make doesn't understand GNU Makefile.cbm syntax; all other platforms use 'make') - scripts/build.sh: use $MAKE instead of hard-coded 'make' (2 call sites) - scripts/package-release.sh: add 'freebsd' to GOOS case validation + usage - .github/workflows/_build.yml: replace inline gmake calls with scripts/build.sh, following venue-parity contract Venue parity contract requires: provision in prepare:, call canonical scripts/ in run:. Inline gmake violated this — now FreeBSD follows the same pattern as Linux/macOS/Windows. Closes: PR DeusData#1422 venue-parity contract violation Signed-off-by: Pedro Ramos <131530838+pr9000@users.noreply.github.com>
|
Accepted: FreeBSD becomes a full release target — with one stated condition, and three things to fix first. The condition, on the record so it is not forgotten later: we will watch this across the coming releases. If the FreeBSD leg turns into a recurring source of release-day pain — mirror flakiness, VM boot failures, timeouts — we will revisit and likely narrow it to non-gating build-only coverage. That is not scepticism about your work; it is that the failure sources here are genuinely outside our control, and I would rather say now that the decision is reversible than quietly resent it later. Full scope, since this is a CI change and I want the cost visible rather than discovered. It cannot block a PR merge — Three things before merge.
What you got right, and it is why this got a yes rather than a shrug. You SHA-pinned One thing worth both of us knowing: And a caveat about the green checks on this PR: they exercise none of it. Build workflows do not run on pull requests, so Fix those three and I will merge. Thank you for doing the pinning homework unprompted. |
Attacked the inputs rather than the patterns this time. Three worked.
ONE INVALID BYTE HID A WHOLE FILE. The scanner abandoned any file that
failed to decode as UTF-8, so appending a single 0xFF made it skip every
readable line in that file, plaintext payload included. A complete
evasion costing one byte. Files are now decoded with replacement rather
than abandoned, and a NUL byte -- git's own binary heuristic -- is what
marks a file as genuinely not a review surface. Only three tracked files
reach that path today: a PNG, a Windows ETW manifest and the nomic blob.
Better still, the evasion is now its own signal: a file with a TEXT
extension that is not valid UTF-8 is reported, because a stray byte in a
.md or .c is anomalous regardless of what surrounds it.
THE TRIPWIRE MATCHED CASE-SENSITIVELY. `Scripts/evil.sh` and
`.GitHub/workflows/` walked past it, and on a case-insensitive checkout
those are the same files as the guarded ones. Now matched with POSIX
character classes rather than `${v,,}` (bash 4 only) or `tr` (external),
so the logic can be tested on any shell -- which matters for a gate
nobody can run locally the way CI runs it.
THE FILES ENDPOINT CAPS AT 3000. A pull request padded past that limit
would hide a CI change in the tail, and the gate would report green over
a change set it never saw. It now compares what the API returned against
the count the PR itself declares and REFUSES when they disagree, rather
than passing on partial data.
All three are pinned in the selftest, alongside the requirement that a
PNG with invalid UTF-8 stays silent -- the hardening must not turn every
binary into a finding.
Verified end to end against real pull requests: #1422 refused (4 guarded
paths), #1245 refused (42 guarded, 392/392 received so no truncation),
#1778 refused (2 guarded), #1678 passes.
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
|
@PR9000 — a nudge, since your fork's last push predates the 21 August acceptance by a few hours and I suspect it never reached you: FreeBSD as a full release target is accepted, with three fixes before merge (unsmoked-publish path, the Two things have moved since that comment that you deserve to know before you start: 1. The 2. The unsmoked-publish fix is bigger on one side than the review stated. If you take the add-to-smoke path, it is not only a One more thing worth saying plainly: your unprompted SHA-pinning of a high-privilege VM action was the right instinct and was noticed. Same for the argued-out aarch64 exclusion. The job has still never executed anywhere — first real run will be a deliberate dry-run dispatch once this lands, per the acceptance's watch-and-revisit condition. No deadline on this one — the acceptance is a week old and you have been consistently responsive. It is simply ready when you are. |
What does this PR do?
Adds FreeBSD 15.1 and 14.4 x86_64 build matrix legs to the reusable build workflow (
.github/workflows/_build.yml).Key details on the
vmactionsFreeBSD setup:ubuntu-latest(x86_64 host). Running QEMU guest emulation on ARM runners (ubuntu-*-arm) causes severe performance degradation leading to 3+ hour timeouts.vmactions/freebsd-vm@v1withsync: rsync.gmake,sqlite3,pkgconf,node22,npm-node22,bash) are installed natively inside the FreeBSD VM viapkg.aarch64leg: Theaarch64leg remains commented out becauselightningcss(a native Rust dependency of the Vite/CSS pipeline) does not publish prebuilt binaries forfreebsd-arm64, causingnpm run buildto fail.Checklist
git commit -s) — required, CI rejectsunsigned commits (DCO, see CONTRIBUTING.md)
make -f Makefile.cbm test)make -f Makefile.cbm lint-ci)