Split Windows CI native and wasm/web jobs - #331
Conversation
Keeps emsdk off the native MSVC critical path while preserving Windows-host coverage of //wasm and //web in a separate job. Co-authored-by: Cursor <cursoragent@cursor.com>
|
@copilot review |
Keep the native/wasm_web Windows split and restore the pointer to ci_windows_dotnet.yml from develop. Co-authored-by: Cursor <cursoragent@cursor.com>
There was a problem hiding this comment.
Pull request overview
Splits the Windows GitHub Actions workflow into two parallel jobs so native MSVC builds/tests are not gated by wasm/web (emsdk) work, while adding Python CI-guard tests to ensure the split and required Bazel flags don’t regress.
Changes:
- Split
.github/workflows/ci_windows.ymlintobuild_and_test(native//...excluding//wasm/...and//web/...) andwasm_web(//wasm/...+//web/...) jobs. - Keep
--config=optand--test_output=errorsacross Windowsbazelisk build/testinvocations and upload distinct test-log artifacts per job. - Extend
python/tests/ci_windows_cppopts_test.pywith workflow-structure parsing and assertions to guard the job split, target scoping, and artifact naming.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
.github/workflows/ci_windows.yml |
Splits Windows CI into parallel native vs wasm/web jobs with scoped Bazel target patterns and distinct artifacts. |
python/tests/ci_windows_cppopts_test.py |
Adds CI-guard tests that validate the Windows workflow’s job split, target scopes, and required Bazel flags. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
pwsh treats bare -//wasm/... as a switch and drops Bazel's -- marker, so native fetch/build/test failed with Invalid options syntax. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.
Suppressed comments (1)
python/tests/ci_windows_cppopts_test.py:389
_workflow_job_bodies()never exits thejobs:section; if the workflow later adds another top-level key afterjobs:(e.g.permissions:/concurrency:), the parser can misinterpret those as jobs or append them to the last job body. This makes the CI guard brittle and can yield incorrect job bodies.
if current is None:
continue
if line.startswith(" ") or not line.strip():
jobs[current].append(line)
else:
pwsh 7 swallows a bare -- before bazelisk, which made -//wasm/... look like a flag. Also stop the CI workflow parser at the next top-level key. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Addressed the remaining PR issues:
|
|
@zzcgumn, I suggest merging this into the 3.1 release so that its CI can pass reliably. |
Summary
ci_windows.ymlinto parallelbuild_and_test(native//...excluding wasm/web) andwasm_web(//wasm/...+//web/...) jobs.--config=optand--test_output=errorson both jobs; add CI guards so the split cannot silently regress.Test plan
bazelisk test //python:ci_windows_cppopts_test//...runwasm_webstill builds/tests emsdk targets on WindowsMade with Cursor