CI perf: workflow_dispatch of CI — Windows-only janitor fixes re-run the full Linux + macOS nightly matrix (~100 min/day, ~30 macOS)
維護者通常 1 天內回覆
評估
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 新手友好度
- 1/100
- Issue 類型
- 功能
- 描述清晰度
- 描述清楚
- 活躍度
- 停滯
- 技術堆疊
- github-actions, yaml
- 領域
- ci-cd
研究方向
Read .github/workflows/ci.yml and the janitor instructions referenced by the issue. Check how workflow_dispatch gates nightly jobs and how CI_SCOPE selects matrix includes, then compare a dispatch with os: all against the stated 99-job baseline. Done means OS-specific dispatches select the intended jobs while scheduled, push, pull request, and merge queue runs retain their current coverage; linked pull request #1820 is already open.
由索引模型根據 Issue 內容生成。
描述
Measurement
Window: 7 days to 2026-10-29 08:17 UTC. There were 6 workflow_dispatch runs of CI. 5 were on ci-janitor/agent branches that fix a Windows-only nightly failure: cargo-home-windows-test, fix-ci-go-gowork-windows-tests, fix-ci-windows-yarnrc-escaped-path, windows-nightly-path-asserts and uv-settings-test-windows. The 6th was pylock-follow-uv.
A dispatch runs the whole nightly matrix. Here are the two dispatches from this morning:
| run | Linux | Windows | macOS | verdict |
|---|---|---|---|---|
40831237830 ci-janitor/cargo-home-windows-test |
98.3 min / 91 jobs | 52.6 / 4 | 43.5 / 4 | red on test (windows-latest, 1) |
40833574647 agent/fix-ci-go-gowork-windows-tests |
96.0 / 91 | 47.4 / 4 | 39.7 / 4 | red on test (windows-latest, 2) |
| for reference, nightly 40824880386 | 95.7 / 91 | 49.9 / 5 | 36.2 / 4 | red on both Windows shards |
In this 4-hour slice those two dispatches used 194 Linux + 83 macOS job-min. That is more than all 10 full PR CI runs together (370 Linux). Neither branch changes anything that runs on Linux or macOS, and the PR's own CI run already covers the Linux tiers.
Where the time goes
Per dispatch: ~97 Linux min in 91 jobs (the full e2e tier, the yarn/cargo-vex full matrices and coverage), ~41 macOS min (test (macos-latest, 1/2) 16.6–18.3 min each, e2e-build-macos 2.9–5.9, yarn-berry (macos) 2.5–3.0) and ~50 Windows min. Only the 4 Windows jobs (e2e-build-windows, test (windows-latest, 1/2), yarn-berry 4.12.0 (windows-latest)) test the fix.
Root cause
The only dispatch input ci.yml has is hosted_e2e. Every nightly-tier job is gated on github.event_name == 'workflow_dispatch' (for example ci.yml lines 365, 562, 825, 957, 1179, 2107, 2169, 2234, 2545), so a dispatch can't pick an OS.
Proposed fix
In .github/workflows/ci.yml:
- Add a dispatch input
os: choice [all, windows, macos, linux], defaultall. - In each job's
if:, replace the baregithub.event_name == 'workflow_dispatch'term with an OS-aware one. Windows jobs (testwindows matrix rows,e2e-build-windows,e2e-windows,cargo-vex-matrix-windows, the windowsyarn-berryrow) take(github.event_name == 'workflow_dispatch' && contains(fromJSON('["all","windows"]'), inputs.os)), and likewise for macOS and Linux. Matrices that mix OSes (test,yarn-berry-e2e) filter theirincludeoninputs.osthe same wayCI_SCOPEalready picks the include list. - Have the ci-janitor routine / agent instructions dispatch with
-f os=windowsfor Windows-only fixes.
schedule, push, pull_request and merge_group are unchanged. ci-ok already treats skipped jobs as passing, and dispatch runs aren't required checks.
Expected saving
- Per Windows-only dispatch: ~97 Linux + ~41 macOS job-min, ~95 Depot/hosted job starts and 4 macOS runner slots.
- At the 7-day rate (5 Windows-only dispatches, ~0.7/day): ~70 Linux + ~30 macOS job-min/day. On days when the janitor is iterating on a Windows nightly break (2 in 25 min this morning) it's ~190 Linux + ~80 macOS.
- Wall clock doesn't change: the Windows test shards (16–21 min) set the length of a dispatch run.
Coverage and risk
Nothing loses coverage. The nightly (schedule) still runs every job on every OS, and os: all (the default) keeps today's dispatch behavior. A janitor fix that turns out to break Linux or macOS is still caught by its PR CI run, the merge queue, and the nightly. Required check names ci-ok / clippy don't change. The risk is a typo in an if: that silently skips a job on schedule. Check with a workflow_dispatch of os: all and compare its job count (99) before merging.
Effort
S: one input and ~12 if: / matrix-include edits in one file, plus one line in the janitor instructions.
ROI
Saving ≈ 0.07k Linux ×1 + 0.03k macOS ×3 = 0.16 weighted k-min/day; confidence 0.6 (the dispatch rate swings with Windows nightly breaks); effort 1 → ROI ≈ 0.1.
Generated by Claude Code
- 主要語言
- Rust
- 星號
- 8
- 分支
- 2
- 平均合併
- 19 小時 12 分鐘
- 30 天內合併 PR
- 709
環境準備
- 沒有 Dockerfile 或 Docker Compose 檔案
- 沒有 Pull Request 範本
- 閱讀貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
SocketDev/socket-patch 的其他 Issue
-
agent:triaged arch-audit priority:p3 refactor
難度 2/5 1-3 小時 新手友好度 83/100
SocketDev/socket-patch#1860 ·
維護者通常 1 天內回覆
-
agent:triaged arch-audit priority:p3 refactor
難度 2/5 1-3 小時 新手友好度 78/100
SocketDev/socket-patch#1838 ·
維護者通常 1 天內回覆
-
Share one scoped env-var test guard: EnvGuard is copy-pasted 11 times across core unit and integration tests可能已有人在做 @mikolalysenko 今天認領。 未關閉agent:claimed agent:triaged arch-audit priority:p3 refactor
難度 4/5 3-5 天 新手友好度 55/100
SocketDev/socket-patch#1889 · 2 則留言 ·
維護者通常 1 天內回覆
-
Memoize env-keyed subprocess probes through one helper: composer, python and ruby each define the same env key and drifted on when an answer is kept可能已有人在做 @mikolalysenko 今天認領。 未關閉agent:claimed agent:triaged arch-audit priority:p1 refactor
難度 4/5 1-2 天 新手友好度 25/100
SocketDev/socket-patch#1888 · 3 則留言 ·
維護者通常 1 天內回覆
-
agent:triaged arch-audit priority:p3 refactor
難度 4/5 1-2 天 新手友好度 55/100
SocketDev/socket-patch#1887 · 1 則留言 ·
維護者通常 1 天內回覆
查看 SocketDev/socket-patch 的全部 Issue
相似的 Issue
-
難度 2/5 1-3 小時 新手友好度 78/100
維護者通常 2 天內回覆
-
難度 2/5 1-3 小時 新手友好度 85/100
維護者通常 1 天內回覆
-
compiler P4 perf
難度 2/5 1-3 小時 新手友好度 78/100
HerringtonDarkholme/hd-lang#1044 ·
維護者通常 1 天內回覆
-
good first issue help wanted r-docs
難度 2/5 1-3 小時 新手友好度 72/100
servo/rust-smallvec#824 ·
維護者通常 1 天內回覆
-
難度 1/5 1 小時以內 新手友好度 90/100
akitaonrails/ai-usagebar#552 ·
維護者通常 1 天內回覆