ci(pr): light smoke on PRs (build prod + smoke, 3 native platforms, path-gated)#884
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
PR CI runs
testbut never builds the binary or smoke-tests it — so built-binary regressions only surface at the release dry run. The WindowsCreateProcessargv-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:
changesjob classifies the PR viagh 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 runsscripts/smoke-test.shon 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-oknow treatsskippedas OK, so docs/CI/test-only PRs (which skip smoke) still pass.SMOKE_DOWNLOAD_URLis intentionally unset →smoke-test.sh's download/update phases self-skip; the coreindex_repository/search/trace phases (which catch the CreateProcess class) still run. Build steps replicate the proven_build.ymlper-OS patterns (ubuntu apt-zlib, macOS ad-hoc codesign, Windows msys2 CLANG64).Scope / CI-sensitivity
.github/workflows/pr.ymlonly. 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.This PR touches only
pr.yml→changessees it as non-product →pr-smokeskips 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 throwawaysrc/touch, or the first real product PR). Independent of the in-flight release fixes; can merge anytime after that validation.