Skip to content

ci: offload frontend and policy checks to Bazel workers - #4387

Merged
ScriptedAlchemy merged 1 commit into
masterfrom
fix/ci-frontend-fleet
Oct 20, 2026
Merged

ScriptedAlchemy merged 1 commit into
masterfrom
fix/ci-frontend-fleet

Conversation

@ScriptedAlchemy

@ScriptedAlchemy ScriptedAlchemy commented Oct 20, 2026 •

Copy link
Copy Markdown
Owner

Frontend CI ran tests and typechecks directly on hosted runners even when private Bazel workers were available. Route the Dashboard job through Bazel and the existing restricted Tailscale identity; reuse remote test results across Dashboard and Linux workspace jobs. Move five existing policy-test targets onto the same execution path.

Add Bazel typecheck and adapter targets, declare React's peer types in the shared npm store, and let the adapter fixture use the declared Node executable with its filtered child environment. Check dashboard determinism with two separate builds and file hashes. Keep the committed extension bundle comparison in its canonical pnpm layout because bundler module IDs depend on that layout. Fork and unrecognized-actor runs retain hosted-only execution.

Validation: actionlint and diff checks pass. Linux remote-only validation exercised frontend and policy targets with local fallback disabled; portability failures were corrected and focused reruns passed. Hosted CI validation is pending.


Devin Review

@changeset-bot

changeset-bot Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 92ca35e

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@devin-ai-integration devin-ai-integration Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note

Newer findings are available below. Devin Review posted a newer report on this PR, in addition to the findings presented here.

Devin Review found 1 potential issue.

1 flag not posted on this PR by your GitHub settings — view it in Devin Review. (Configure)

Devin Review

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 new potential issue.

1 flag not posted on this PR by your GitHub settings — view it in Devin Review. (Configure)

Devin Review

Comment thread .github/workflows/ci.yml
Comment on lines +774 to +778
cache-key: ci-dashboard
tailscale-client-id: >-
${{ (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository)
&& ((github.actor_id == '25274700' && vars.TS_BAZEL_CLIENT_ID)
|| (github.actor_id == '158243242' && vars.TS_BAZEL_BOT_CLIENT_ID)) || '' }}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Hosted dashboard cache never warms

On hosted-only runs, dashboard restores the ci-dashboard action cache but never saves its new Bazel outputs. No other job saves that cache key, so later runs repeatedly miss these outputs.

Learn more

The shared setup action restores the job's named Bazel disk cache when the Tailscale client ID is empty. It does not save that cache after the build; other Bazel jobs explicitly use actions/cache/save with steps.bazel.outputs.disk-cache-path and disk-cache-key. This job introduces a distinct ci-dashboard key but lacks a matching save step, so master cannot populate the cache restored by later hosted-only jobs.

Example: A hosted master dashboard build populates its local action cache and completes. A later fork PR restores ci-dashboard, finds no saved master entry, and repeats those actions.

Recommended fix: Add a master-only, always-on save step to dashboard, following the other Bazel jobs and using the bazel step's output path and key. Keep it conditional on the key being nonempty so fleet runs do not attempt a disk-cache save.

Devin Review


Was this helpful? React with 👍 or 👎 to provide feedback.

@ScriptedAlchemy
ScriptedAlchemy merged commit af47543 into master Oct 20, 2026
4 of 8 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