ci(e2e): keep the relay version markers in the e2e build artifact - #15303
Conversation
build-relay.mjs writes each relay's marker as out/relay/<platform>/.version, and upload-artifact excludes dotfiles unless include-hidden-files is set. The markers were therefore stripped from e2e-build-out, so every consumer that actually starts a relay failed with: Orca's local relay build is missing its version marker at out/relay/linux-x64/.version This stayed latent because the sharded e2e lane never sets ORCA_E2E_SSH_DOCKER, so its SSH specs skip instead of touching the relay. The changed-specs lane does set it whenever a changed spec needs Docker SSH, which is why the failure only appears on PRs that touch SSH-adjacent code.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan includes up to 10 reviews per rolling hour; 1 remains after this review. 📝 WalkthroughWalkthroughThe E2E workflow now includes hidden files in uploaded build artifacts. This preserves relay Merge Risk: ⚪ Minimal · up to This PR preserves relay version markers in the E2E build artifact through a localized CI configuration change; no actionable merge-blocking risk remains beyond normal checks and review. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…ablyai#15303) build-relay.mjs writes each relay's marker as out/relay/<platform>/.version, and upload-artifact excludes dotfiles unless include-hidden-files is set. The markers were therefore stripped from e2e-build-out, so every consumer that actually starts a relay failed with: Orca's local relay build is missing its version marker at out/relay/linux-x64/.version This stayed latent because the sharded e2e lane never sets ORCA_E2E_SSH_DOCKER, so its SSH specs skip instead of touching the relay. The changed-specs lane does set it whenever a changed spec needs Docker SSH, which is why the failure only appears on PRs that touch SSH-adjacent code.
…ablyai#15303) build-relay.mjs writes each relay's marker as out/relay/<platform>/.version, and upload-artifact excludes dotfiles unless include-hidden-files is set. The markers were therefore stripped from e2e-build-out, so every consumer that actually starts a relay failed with: Orca's local relay build is missing its version marker at out/relay/linux-x64/.version This stayed latent because the sharded e2e lane never sets ORCA_E2E_SSH_DOCKER, so its SSH specs skip instead of touching the relay. The changed-specs lane does set it whenever a changed spec needs Docker SSH, which is why the failure only appears on PRs that touch SSH-adjacent code.
ELI5
CI builds the SSH relay, then zips it up and hands it to the test jobs. The zip step silently drops files whose names start with a dot — and the relay's version stamp is called
.version. So the tests got a relay with no version stamp and refused to start it. One line of config.What Changed
Adds
include-hidden-files: trueto thee2e-build-outartifact upload in.github/workflows/e2e.yml. That is the only artifact upload in the repo that carriesout/after a relay build.Why
config/scripts/build-relay.mjs:141and:169write each relay's marker asout/relay/<platform>/.version.actions/upload-artifactexcludes hidden files unless told otherwise, and the build log states it plainly:So every consumer that downloads
e2e-build-outand actually starts a relay fails:Why this stayed hidden. The sharded
e2elane never setsORCA_E2E_SSH_DOCKER, so its SSH specs skip themselves and never touch the relay. Thechanged e2e specslane does set it whenever a changed spec needs Docker SSH. The failure therefore only appears on PRs that touch SSH-adjacent code — where it looks like the PR's fault. It is not; the relay builds correctly every time, and only its marker goes missing in transit.Observed on PR #15295, where five SSH specs failed with this error across two independent runs — identical output both times, so not a flake:
pty-input-write-queue-ssh.spec.tsssh-cold-activation-restore.spec.ts(×2)ssh-docker-reconnect-pane-restore.spec.tsssh-terminal-window-wake-stale-grid-repro.spec.tsLinked Issue
No issue filed — found while diagnosing a CI failure on #15295.
Visual Proof
N/A— CI configuration only, no product surface.Testing
32122779703: the relay builds all seven targets successfully, and the upload step reportsinclude-hidden-files: false.config/scripts/build-relay.mjs:141and:169.upload-artifactin the repo that carriesout/after a relay build, so no sibling call site needs the same flag.include-hidden-filessits at the same indent as itswith:siblings.The real verification is this PR's own CI: it does not touch SSH-adjacent code, so its
changed e2e specslane will not exercise a relay. Confirmation comes from rerunning #15295 on top of this change, which I will do once this lands.No test added: this is a workflow-level flag with no unit-testable surface, and the assertion that would prove it lives in CI itself.
Review
Agent skill upstream boundary
Notes
out/is build output only; no credentials or dotfile secrets exist there. The flag widens the artifact to hidden files under a build directory, nothing else.Checklist
N/Awith reasonpnpm lint,pnpm typecheck,pnpm test, andpnpm buildpass (or CI will cover; local preferred)Author