ci(smoke): per-platform install + Base precompile smoke test (BOP-385)#44
Merged
Merged
Conversation
231303a to
8b1ae76
Compare
…-385) Validate published base-anvil binaries the way an external developer does: run the public install one-liner, then a dependency-free Base precompile test that passes only when the binary registered + seeded the Base ActivationRegistry (no false pass). v0 covers the POSIX legs (Linux gnu amd64 new/old glibc, arm64; macOS arm64 + Intel). Windows and Alpine/musl deferred to a follow-up. Co-authored-by: OpenCode <opencode-noreply@coinbase.com>
workflow_dispatch is not triggerable until the file lands on the default branch, so add a path-scoped pull_request trigger to exercise the matrix on this PR (and whenever the smoke harness changes). Co-authored-by: OpenCode <opencode-noreply@coinbase.com>
- Pin FOUNDRY_DIR=$HOME/.foundry and use absolute bin paths + $GITHUB_PATH: XDG_CONFIG_HOME is set on the Linux runners (not macOS), so the installer put base-foundryup under $XDG_CONFIG_HOME/.foundry and the hardcoded $HOME/.foundry/bin missed it (exit 127). - Comment out the macos-13 (Intel) leg: that runner does not provision in this org and hangs until the 24h timeout (same as BOP-367). Co-authored-by: OpenCode <opencode-noreply@coinbase.com>
The ticket's headline finding was an arm64-specific glibc floor (gnu arm64 binaries needing GLIBC_2.39). The matrix only tested arm64 on new glibc (24.04); add ubuntu-22.04-arm so the smoke job actually exercises the arm64 old-glibc path that bug lived on. Co-authored-by: OpenCode <opencode-noreply@coinbase.com>
The leg reproduces a real, currently-live failure: the rc.19 arm64 gnu binary the default base-foundryup installs needs GLIBC_2.38/2.39 and fails on old-glibc arm64. Mark it experimental (continue-on-error) so it keeps reporting but does not block the run; it auto-flips green once the #42 glibc-floor fix ships to the default release. Co-authored-by: OpenCode <opencode-noreply@coinbase.com>
2d20db2 to
1c38845
Compare
Cosmetic: the workflow_dispatch input description example still named the old rc; the default install path was never pinned to it. Co-authored-by: OpenCode <opencode-noreply@coinbase.com>
…5-intel) macos-13 was retired by GitHub on 2025-12-04, so the old comment's 'does not provision in this org' was inaccurate. Point the follow-up at the current macos-15-intel label and frame the test-or-drop decision. Co-authored-by: OpenCode <opencode-noreply@coinbase.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.
What this PR adds
A
smokeGitHub Actions workflow (.github/workflows/smoke.yml) plus a tiny, dependency-free Foundry proof test (smoke/). Together they validate that already-publishedbase-anvilbinaries actually install and run on each target OS, by doing exactly what an external developer does.Each matrix leg, on a clean GitHub-hosted runner:
curl …/foundryup/install | bash)base-foundryupinstallsbase-forge/base-cast/base-anvil/base-chiselbase-forge testruns a test that calls the Base ActivationRegistry precompileThe proof test passes only when the binary actually registered and seeded the Base precompiles. Without Base, the call hits an empty address and the test fails, so a green run is real proof, not a false pass.
Why we care
BOP-385. Our release pipeline proves binaries build; it does not prove they run on the platforms developers use. Platform-specific runtime failures (wrong glibc floor, a runner that never provisions, a broken install path) stay invisible until a developer hits them. A single Apple-Silicon laptop cannot cover Linux amd64, arm64, or Windows via emulation, so the only reliable coverage is real per-platform runners. This workflow is the durable, recurring form of that check, and it directly guards the launch promise: "install with one line and
base-forge testworks."It already earned its keep: the arm64 + old-glibc leg caught a live
GLIBC_2.38/2.39failure in the rc.19 default, which #46 (default → v1.1.0) then fixed. This PR now confirms green across the board.Coverage (all green)
Triggers:
workflow_dispatch(optionalversioninput) andpull_requestscoped to smoke files.Deferred to follow-ups
macos-13runner does not provision in this org; will come via Rosetta-on-arm64 or a self-hosted runner)scheduletrigger to continuously validate the live default release