Skip to content

ci(e2e): keep the relay version markers in the e2e build artifact - #15303

Merged
brennanb2025 merged 1 commit into
mainfrom
brennanb2025/e2e-artifact-include-hidden-files
Aug 18, 2026
Merged

brennanb2025 merged 1 commit into
mainfrom
brennanb2025/e2e-artifact-include-hidden-files

Conversation

@brennanb2025

@brennanb2025 brennanb2025 commented Aug 18, 2026 •

Copy link
Copy Markdown
Contributor
Files Added Deleted Net
Test 0 0 0 0
Prod 1 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​4 0 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​4

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: true to the e2e-build-out artifact upload in .github/workflows/e2e.yml. That is the only artifact upload in the repo that carries out/ after a relay build.

Why

config/scripts/build-relay.mjs:141 and :169 write each relay's marker as out/relay/<platform>/.version. actions/upload-artifact excludes hidden files unless told otherwise, and the build log states it plainly:

Built relay for linux-x64 → out/relay/linux-x64/relay.js
...
##[group]Run actions/upload-artifact@v7
  include-hidden-files: false

So every consumer that downloads e2e-build-out and actually starts a relay fails:

Error occurred in handler for 'ssh:connect':
  Orca's local relay build is missing its version marker at
  out/relay/linux-x64/.version.
  This usually indicates a packaging or build problem; reinstall Orca.

Why this stayed hidden. The sharded e2e lane never sets ORCA_E2E_SSH_DOCKER, so its SSH specs skip themselves and never touch the relay. The changed e2e specs lane 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.ts
  • ssh-cold-activation-restore.spec.ts (×2)
  • ssh-docker-reconnect-pane-restore.spec.ts
  • ssh-terminal-window-wake-stale-grid-repro.spec.ts

Linked Issue

No issue filed — found while diagnosing a CI failure on #15295.

Visual Proof

N/A — CI configuration only, no product surface.

Testing

  • Verified the premise directly in the build job log of run 32122779703: the relay builds all seven targets successfully, and the upload step reports include-hidden-files: false.
  • Verified the marker really is a dotfile at config/scripts/build-relay.mjs:141 and :169.
  • Confirmed the artifact download itself succeeds (41.5 MB, digest verified) — the file is missing from the archive, not lost in transit.
  • Confirmed this is the only upload-artifact in the repo that carries out/ after a relay build, so no sibling call site needs the same flag.
  • Structurally validated the edit: include-hidden-files sits at the same indent as its with: siblings.

The real verification is this PR's own CI: it does not touch SSH-adjacent code, so its changed e2e specs lane will not exercise a relay. Confirmation comes from rerunning #15295 on top of this change, which I will do once this lands.

  • I manually tested these changes locally
  • Automated tests added/updated, or explained why not below

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

  • Not applicable.

Notes

  • Cross-platform: the marker is written for all six relay targets plus the WSL hook relay, so all were affected equally; the fix covers all of them.
  • Security: 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.
  • Performance: adds a handful of tiny files to a 41 MB artifact.

Checklist

  • This PR is small and focused
  • I explained what changed and why (including ELI5)
  • Before/after screenshots or videos attached for UI changes, or N/A with reason
  • Self-reviewed for correctness, security, and performance
  • Cross-platform, SSH/remote, and path/shortcut impact considered (or N/A)
  • pnpm lint, pnpm typecheck, pnpm test, and pnpm build pass (or CI will cover; local preferred)

Author

  • X / Twitter: @BrennanKB5

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.
@coderabbitai

coderabbitai Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: c6042b80-dc7f-4c2e-b2a9-9e4dc14d635e

📥 Commits

Reviewing files that changed from the base of the PR and between 6efd406 and 8592a47.

📒 Files selected for processing (1)
  • .github/workflows/e2e.yml

Included review availability: Your plan includes up to 10 reviews per rolling hour; 1 remains after this review.


📝 Walkthrough

Walkthrough

The E2E workflow now includes hidden files in uploaded build artifacts. This preserves relay .version marker files for downstream SSH tests.

Merge Risk: ⚪ Minimal · up to 8592a

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)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the CI change that preserves relay version markers in E2E build artifacts.
Description check ✅ Passed The description explains the cause, change, impact, testing, and checklist status, but it does not provide the required linked issue.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@brennanb2025
brennanb2025 merged commit 53bd956 into main Aug 18, 2026
47 checks passed
@brennanb2025
brennanb2025 deleted the brennanb2025/e2e-artifact-include-hidden-files branch August 18, 2026 10:13
paidaxingyo666 pushed a commit to paidaxingyo666/Manta that referenced this pull request Aug 21, 2026
…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.
dallascrilley pushed a commit to dallascrilley/orca that referenced this pull request Aug 27, 2026
…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.
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