Skip to content

[Chore] Cancel obsolete PR CI runs and remove duplicate builds - #2294

Merged
edelauna merged 4 commits into
mainfrom
ci/cancel-obsolete-pr-runs-2289
Nov 5, 2026
Merged

edelauna merged 4 commits into
mainfrom
ci/cancel-obsolete-pr-runs-2289

Conversation

@zoomote2

@zoomote2 zoomote2 Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

​Created by Roomote. Follow up by mentioning @roomote, in the web UI, or in Discord.

Related GitHub Issue

Closes: #2289

Description

This PR reduces avoidable work in the pull request validation CI. It makes three changes in separate commits:

  1. Cancel superseded PR runs. Code QA, E2E Tests (Mocked), CodeQL Advanced, and Release Validation now use workflow-level concurrency groups. The group combines the workflow name and the pull request number (${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}). cancel-in-progress applies only to pull_request events. Non-PR events get a unique run_id group. This keeps main pushes, merge-queue entries, release runs, and manual dispatches queueing or running as before. The job-level SHA-keyed concurrency on unit-test stays in place. It still protects duplicate runs of one commit against the OS-specific Turbo cache save. Visual Regression and Changed-code mutation testing already cancel obsolete runs, so they stay unchanged.
  2. Skip the workspace install in the translation check. scripts/find-missing-translations.js uses only Node built-ins. The check-translations job keeps the pinned Node and pnpm setup with skip-install: true and no longer installs the workspace. The Code QA dependency install guardrail test now allows this single documented opt-out. It still requires a frozen lockfile for every other job.
  3. Remove duplicate webview builds. The bundle task in src/turbo.json already depends on @roo-code/vscode-webview#build, and Turbo restores its outputs on a cache hit. The explicit pnpm --filter @roo-code/vscode-webview build after pnpm -w bundle repeated the Vite build for nothing. This build took about 21 seconds in the mocked E2E trace linked from the issue. The scripts test:ci, test:ci:mock, and themes:build now trust the bundle graph alone. The heap:build script already did this. Direct script contracts stay intact: each script still produces every asset it needs from a clean checkout.

Reviewers should check with care: the concurrency expressions (cancel-in-progress with a condition) and the widened guardrail test in scripts/code-qa-workflow.test.mjs.

Required check names, the test inventory, coverage lanes, and cache keys stay unchanged.

Test Procedure

Local verification in this sandbox:

  • Cancellation correctness. The concurrency groups are static workflow YAML. Behavior follows from GitHub's group semantics: PR events share one group per PR and cancel the previous run; every other event gets a unique group and cannot cancel anything. CI on this PR exercises the PR path; Visual Regression and mutation testing already run this pattern on main.
  • Translation check without dependencies. Removed node_modules, ran node scripts/find-missing-translations.js: exit 0, all areas complete. Then removed one key from a locale file and reran without node_modules: the script reported the missing key and failed. Restored the file and node_modules.
  • Bundle graph covers the e2e assets. Deleted src/webview-ui/build, ran pnpm -w bundle: the graph rebuilt src/webview-ui/build/assets/index.js (the file the extension serves). Ran pnpm -w bundle again after deleting the directory: a Turbo cache hit restored the same outputs.
  • Mocked E2E through the modified script. With src/webview-ui/build deleted, ran TEST_FILE=utils.test USE_MOCK=true xvfb-run -a pnpm --filter @roo-code/vscode-e2e test:ci:mock and the same for restart-persistence.test. Both passed.
  • Theme consumers through the modified script. With src/webview-ui/build deleted, ran xvfb-run -a pnpm --filter @roo-code/vscode-e2e themes:check. It passed and reported the fixtures current.
  • Suites. pnpm test:code-qa-ci (7/7), pnpm knip, pnpm --dir src run test:workflow (316/316), and the full pnpm test (14/14 Turbo tasks) pass. Reviewers can repeat the single-suite mocked E2E commands above.

Pre-Submission Checklist

  • Issue Linked: This PR is linked to an approved GitHub Issue (see "Related GitHub Issue" above).
  • Scope: My changes are focused on the linked issue (one major feature/fix per PR).
  • Self-Review: I reviewed my own code with care.
  • Writing Style: The PR title and description use Simplified Technical English (ASD-STE100): short sentences, plain words, active voice, one idea per sentence, no contractions.
  • Testing: New and/or updated tests have been added to cover my changes (if applicable).
  • Test Helpers (test changes only): Shared test helpers (src/test-utils/, @/utils/test-utils) are used only for mechanical duplication; test intent and scenario-specific mocks remain visible.
  • Visual Snapshot (UI changes only): If a user would notice this change at a glance (layout, theme tokens, brand elements, empty/error states), I added or updated a *.visual.tsx snapshot in webview-ui/. See webview-ui/AGENTS.md → "When a UI change needs a snapshot".
  • Documentation Impact: I checked if my changes need documentation updates (see "Documentation Updates" section below).
  • Contribution Guidelines: I read and agree to the Contributor Guidelines.

Visual Snapshots

Not applicable. This PR changes CI configuration and build scripts only. It changes no rendered UI.

Videos (interaction / animation only)

Not applicable. This PR changes no interactive or animated UI.

Documentation Updates

  • No documentation updates are required.
  • Yes, documentation updates are required. (Describe what to update, or link to a PR in the docs repository).

Additional Notes

Measured savings, kept separate from required-check completion time:

  • Execution saved per superseded PR push: the canceled run no longer reaches completion. This covers the full Code QA matrix, the mocked E2E job, CodeQL analysis, and Release Validation when its path filters match.
  • Runner minutes saved per mocked E2E run: about 21 seconds of duplicate Vite build, plus job setup in the translation check (median 23 seconds install in the issue's sample, now skipped). The cancellation savings scale with queue depth and are observable per superseded push; the duplicate-build savings are fixed per run.
  • Required-check completion time: not expected to change for the winning (latest) run of each check. Queue-time reduction from fewer concurrent obsolete runs remains a hypothesis, as the issue states.

Commits are independent and revertible: cancellation, translation install skip, and duplicate-build removal each revert separately.

Get in Touch

0x7777777_

@coderabbitai

coderabbitai Bot commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are limited based on label configuration.

🏷️ Required labels (at least one): 1
  • coderabbit-review-active

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

Run configuration

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@zoomote2

zoomote2 Bot commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor Author

No new code issues found. The branch was rebased onto current main and the translation-check install skip was reverted; the revert is clean and the previously reviewed concurrency and duplicate-build changes are unchanged. One documentation-level issue outstanding: the PR description still describes the reverted install skip, and Closes: #2289 would close the issue with that acceptance criterion unmet. 15/19 checks green on this commit at review time (extension-host-visual and both platform-unit-test lanes still running; e2e-mock, theme-fixtures, webview-visual, and compile already passed). See session

  • PR description (Description item 2, "Test Procedure" bullet 2, "Additional Notes" savings bullet) still describes the translation-check install skip that the revert commit removed, so the description no longer matches the actual diff; update the description or restore the change before merging, since Closes: #2289 would close the issue while its "translation checks work without installed workspace dependencies" acceptance criterion is unmet.

Reviewed 0503002

@github-actions

github-actions Bot commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

Review status

This PR was opened by an automated account. A human maintainer must verify the change intent, provenance, and validation before merging.

Current step: The required review sequence passed. Remaining merge requirements apply.

Review-state labels are managed by this workflow; do not edit them manually. community-approved is managed the same way — do not add or remove it manually. It signals a fresh community code approval for the current head as an advisory priority only; maintainer review is still required.

@codecov

codecov Bot commented Nov 1, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@edelauna
edelauna marked this pull request as ready for review November 4, 2026 04:27
roomote and others added 4 commits November 4, 2026 04:42
Code QA, mocked E2E, CodeQL, and Release Validation kept running every
push to a pull request, so older commits queued and ran to completion
wasted. Add workflow-level concurrency groups keyed by the pull request
number with cancel-in-progress only for pull_request events; other
events get unique run_id groups, so main, release, merge-queue, and
manual runs keep their current behavior.

Refs #2289
scripts/find-missing-translations.js uses only Node built-ins, verified
by running it with node_modules removed: it passes on a clean tree and
still detects an injected missing key. Keep the pinned Node/pnpm setup
and drop the frozen-lockfile install from check-translations; update the
Code QA workflow guardrail test to allow the single documented
skip-install opt-out.

Refs #2289
…graph

The src/turbo.json bundle task already depends on
@roo-code/vscode-webview#build, and a cache hit restores its outputs,
so the explicit pnpm --filter @roo-code/vscode-webview build in
test:ci, test:ci:mock, and themes:build repeated the Vite build for
nothing (about 21s per mocked E2E run). Verified by deleting
src/webview-ui/build and running the modified scripts: mocked E2E
(utils.test, restart-persistence.test) passes and themes:check reports
fixtures current. heap:build already trusted the bundle graph alone.

Refs #2289
@edelauna
edelauna force-pushed the ci/cancel-obsolete-pr-runs-2289 branch from 7376ada to 0503002 Compare November 4, 2026 04:43
@github-actions github-actions Bot added the awaiting-maintainer CodeRabbit approved; waiting for a human maintainer label Nov 4, 2026
@edelauna
edelauna added this pull request to the merge queue Nov 5, 2026
@github-actions github-actions Bot removed the awaiting-maintainer CodeRabbit approved; waiting for a human maintainer label Nov 5, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Nov 5, 2026
@edelauna
edelauna added this pull request to the merge queue Nov 5, 2026
Merged via the queue into main with commit 1c15695 Nov 5, 2026
24 checks passed
@edelauna
edelauna deleted the ci/cancel-obsolete-pr-runs-2289 branch November 5, 2026 01:58
easonLiangWorldedtech added a commit to easonLiangWorldedtech/Zoo-Code that referenced this pull request Nov 5, 2026
Live merge base 3ee042d; main brought 6 commits (Zoo-Code-Org#2223 display settings, Zoo-Code-Org#2313
Keenable, Zoo-Code-Org#1309 abort-signal round 2, Zoo-Code-Org#2293 mutant comments, Zoo-Code-Org#2294 CI hygiene,
Zoo-Code-Org#1207 BM25 ranker) across 113 paths. Conflict prediction by blob identity against
the live merge base flagged 10 shared paths; 8 auto-merged and 2 needed a hand
resolution. Both hand resolutions keep the settled side and our side:

- src/core/webview/ClineProvider.ts: kept main's displaySettings import and our
  extra ProviderSettingsNotFoundError binding; took main's three new display keys
  (timeFormat/dateFormat/showRelativeTimes) into our getState() return, re-pointed
  at mergedStateValues because that is where our per-view merge feeds this block;
  and wrapped our setValues() sanitization with main's withoutInvalidDisplaySettings
  so an invalid display value is dropped before the shared write and before the
  view-local write, instead of only before the shared write.
- src/core/webview/webviewMessageHandler.ts: kept main's isInvalidDisplayValue
  guard and our viewStates guard in the updateSettings loop, both with their own
  continue, and kept main's whole failed-save/settingsSaveResult restructuring.

Fidelity: every line either side added since the merge base is present in the
result except 6, all of them intentional rewrites named above (1 ours, 5 main).
No file present on either side is absent from the result: 0 of main's 39 new files
missing, 0 of ours' 1 new file missing, 0 files main deleted since the base.
No conflict markers remain, and the recursive stage-1 blobs matched the real
merge-base blobs byte for byte with no committed markers in them.
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.

CI: cancel obsolete PR runs and remove redundant setup and builds

2 participants