Skip to content

ci(pr): light smoke on PRs (build prod + smoke, 3 native platforms, path-gated)#884

Merged
DeusData merged 3 commits into
mainfrom
feat/pr-smoke
Jul 5, 2026
Merged

ci(pr): light smoke on PRs (build prod + smoke, 3 native platforms, path-gated)#884
DeusData merged 3 commits into
mainfrom
feat/pr-smoke

Conversation

@DeusData

@DeusData DeusData commented Jul 5, 2026

Copy link
Copy Markdown
Owner

Motivation

PR CI runs test but never builds the binary or smoke-tests it — so built-binary regressions only surface at the release dry run. The Windows CreateProcess argv-quoting bug (worker got mangled JSON) slipped all the way to the release gate for exactly this reason.

What this adds

A path-gated light smoke:

  • changes job classifies the PR via gh pr diff --name-only (no new action dependency). Product code = src/ · internal/ · Makefile.cbm · scripts/build.sh · scripts/smoke-test.sh · scripts/env.sh.
  • pr-smoke (only when product code changed): builds the production binary and runs scripts/smoke-test.sh on ubuntu-latest + macos-14 + windows-latest — the reliable native platforms (not the flaky broad/emulated legs, which stay in the dry run). fail-fast: false; every leg gates.
  • ci-ok now treats skipped as OK, so docs/CI/test-only PRs (which skip smoke) still pass.

SMOKE_DOWNLOAD_URL is intentionally unset → smoke-test.sh's download/update phases self-skip; the core index_repository/search/trace phases (which catch the CreateProcess class) still run. Build steps replicate the proven _build.yml per-OS patterns (ubuntu apt-zlib, macOS ad-hoc codesign, Windows msys2 CLANG64).

Scope / CI-sensitivity

  • .github/workflows/pr.yml only. Adds a gating build+smoke on product-code PRs (docs/CI/test PRs unaffected + fast). Windows is billed 2×, so product PRs get slower — the deliberate cost of catching regressions at PR time. The full broad smoke stays in the dry run/release.
  • Validated locally: YAML parses; path-filter matches product vs docs/CI/test correctly.

⚠️ Validation note

This PR touches only pr.ymlchanges sees it as non-product → pr-smoke skips on this very PR (chicken-and-egg). So the build+smoke legs are not self-validated here. Before merge we should exercise them once (a throwaway src/ touch, or the first real product PR). Independent of the in-flight release fixes; can merge anytime after that validation.

DeusData added 3 commits July 5, 2026 14:00
PR CI ran tests but never built the binary or smoke-tested it, so built-binary
regressions only surfaced at the release dry run — e.g. the Windows
CreateProcess argv-quoting bug (worker got mangled JSON) slipped all the way to
the release gate.

Add a path-gated light smoke: on PRs that touch product code (src/, internal/,
Makefile.cbm, build.sh, smoke-test.sh, env.sh), build the PRODUCTION binary and
run scripts/smoke-test.sh on ubuntu-latest + macos-14 + windows-latest (native,
reliable — not the flaky broad/emulated legs). Every leg gates. Docs/CI/test PRs
skip it and stay fast (gh pr diff --name-only filter). The full broad/emulated
smoke stays in the release dry run.

SMOKE_DOWNLOAD_URL is intentionally unset so smoke-test.sh's download/update
phases self-skip; the core index/search/trace phases (which catch the
CreateProcess class) still run. ci-ok now treats skipped as OK so PRs that skip
smoke still pass.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
@DeusData DeusData enabled auto-merge July 5, 2026 13:17
@DeusData DeusData merged commit 16cf03f into main Jul 5, 2026
18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant