Repository navigation
[Chore] Cancel obsolete PR CI runs and remove duplicate builds - #2294
Conversation
|
Important Review skippedAuto reviews are limited based on label configuration. 🏷️ Required labels (at least one): 1
Please check the settings in the CodeRabbit UI or the
|
|
No new code issues found. The branch was rebased onto current
Reviewed 0503002 |
Review statusThis 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. |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
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
7376ada to
0503002
Compare
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.
Related GitHub Issue
Closes: #2289
Description
This PR reduces avoidable work in the pull request validation CI. It makes three changes in separate commits:
Code QA,E2E Tests (Mocked),CodeQL Advanced, andRelease Validationnow 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-progressapplies only topull_requestevents. Non-PR events get a uniquerun_idgroup. This keeps main pushes, merge-queue entries, release runs, and manual dispatches queueing or running as before. The job-level SHA-keyed concurrency onunit-teststays in place. It still protects duplicate runs of one commit against the OS-specific Turbo cache save.Visual RegressionandChanged-code mutation testingalready cancel obsolete runs, so they stay unchanged.scripts/find-missing-translations.jsuses only Node built-ins. Thecheck-translationsjob keeps the pinned Node and pnpm setup withskip-install: trueand no longer installs the workspace. TheCode QA dependency installguardrail test now allows this single documented opt-out. It still requires a frozen lockfile for every other job.bundletask insrc/turbo.jsonalready depends on@roo-code/vscode-webview#build, and Turbo restores its outputs on a cache hit. The explicitpnpm --filter @roo-code/vscode-webview buildafterpnpm -w bundlerepeated the Vite build for nothing. This build took about 21 seconds in the mocked E2E trace linked from the issue. The scriptstest:ci,test:ci:mock, andthemes:buildnow trust the bundle graph alone. Theheap:buildscript 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-progresswith a condition) and the widened guardrail test inscripts/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:
Visual Regressionandmutation testingalready run this pattern on main.node_modules, rannode scripts/find-missing-translations.js: exit 0, all areas complete. Then removed one key from a locale file and reran withoutnode_modules: the script reported the missing key and failed. Restored the file andnode_modules.src/webview-ui/build, ranpnpm -w bundle: the graph rebuiltsrc/webview-ui/build/assets/index.js(the file the extension serves). Ranpnpm -w bundleagain after deleting the directory: a Turbo cache hit restored the same outputs.src/webview-ui/builddeleted, ranTEST_FILE=utils.test USE_MOCK=true xvfb-run -a pnpm --filter @roo-code/vscode-e2e test:ci:mockand the same forrestart-persistence.test. Both passed.src/webview-ui/builddeleted, ranxvfb-run -a pnpm --filter @roo-code/vscode-e2e themes:check. It passed and reported the fixtures current.pnpm test:code-qa-ci(7/7),pnpm knip,pnpm --dir src run test:workflow(316/316), and the fullpnpm test(14/14 Turbo tasks) pass. Reviewers can repeat the single-suite mocked E2E commands above.Pre-Submission Checklist
src/test-utils/,@/utils/test-utils) are used only for mechanical duplication; test intent and scenario-specific mocks remain visible.*.visual.tsxsnapshot inwebview-ui/. Seewebview-ui/AGENTS.md→ "When a UI change needs a snapshot".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
Additional Notes
Measured savings, kept separate from required-check completion time:
Code QAmatrix, the mocked E2E job,CodeQLanalysis, andRelease Validationwhen its path filters match.Commits are independent and revertible: cancellation, translation install skip, and duplicate-build removal each revert separately.
Get in Touch
0x7777777_