ci: move mingw + clang-cl Windows builds to nightly#3237
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Moves the two slowest Windows alternative-toolchain CI jobs (MinGW + clang-cl) off per-PR/push runs and onto a nightly schedule (plus manual dispatch), reducing per-PR CI time while retaining periodic coverage for toolchain regressions.
Changes:
- Add a daily
scheduletrigger and gate MinGW/clang-cl jobs to run only onscheduleorworkflow_dispatch. - Gate the main build matrix, bundle smoke test, and Linux GCC warning gate to not run on
schedule(so nightly runs only the toolchain jobs). - Adjust workflow concurrency grouping to include
github.event_nameto avoid cross-event cancellations.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
skills/preflight.md |
Updates CI lane documentation to reflect per-PR vs nightly split; clarifies how to run the nightly toolchain lanes. |
skills/pr_review_iteration.md |
Updates iteration guidance to reflect the new CI cadence and nightly-only toolchain coverage. |
.github/workflows/build.yml |
Adds nightly schedule and gates jobs so only the two heavy Windows toolchain lanes run nightly; updates concurrency key. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…enerator (VS18) in preflight (per Copilot)
…review_on_push did not auto-fire on pushes in testing)
…bs + both toolchains); only the cron schedule runs toolchains alone (per Copilot)
…push trigger is master-only (per Copilot)
…dispatch-note contradiction + mingw run-on (per Copilot)
Contributor
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
Comments suppressed due to low confidence (1)
.github/workflows/build.yml:627
build_windows_mingwrunsgh cache delete ...(see the "Refresh sccache slot" step later in this job), but the job does not requestactions: writepermissions. Other jobs that delete caches (e.g. thebuildmatrix) explicitly set this permission; if the repo/workflow defaults are read-only, the nightly run will fail here.
Add job-level permissions mirroring the matrix job (contents: read, actions: write).
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
…e covers it) (per Copilot)
borisbat
added a commit
that referenced
this pull request
Jun 21, 2026
Rewrite pr_review_iteration.md Section 1 around the loop we converged on while shipping the nightly-CI (#3237) and lint (#3239) PRs: iterate against Copilot (~5 min, free ruleset check), never block on the ~30-min CI matrix between rounds; only wait for green once Copilot is dry. A red EARLY during the loop is a free signal (jump on it); a red AFTER Copilot is dry loops back into Copilot (the fix is new code). Manual re-request is mandatory - review_on_push does not auto-fire on any push. Section 3: make the comment-triage bar conservative - default reject, accept only real bugs, real issues, or factually-incorrect text. Reject prose/wording nits (unless way off or factually wrong), unlikely/never- happen bugs, over-defensive guards, and suggestions that diverge from repo convention. Replaces the old "cosmetic accept" table row. Prose-tail note, quick-ref triage row, and Section 2's CI-fix step aligned to match. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
borisbat
added a commit
that referenced
this pull request
Jun 21, 2026
Rewrite pr_review_iteration.md Section 1 around the loop we converged on while shipping the nightly-CI (#3237) and lint (#3239) PRs: iterate against Copilot (~5 min, free ruleset check), never block on the ~30-min CI matrix between rounds; only wait for green once Copilot is dry. A red EARLY during the loop is a free signal (jump on it); a red AFTER Copilot is dry loops back into Copilot (the fix is new code). Manual re-request is mandatory - review_on_push does not auto-fire on any push. Section 3: make the comment-triage bar conservative - default reject, accept only real bugs, real issues, or factually-incorrect text. Reject prose/wording nits (unless way off or factually wrong), unlikely/never- happen bugs, over-defensive guards, and suggestions that diverge from repo convention. Replaces the old "cosmetic accept" table row. Prose-tail note, quick-ref triage row, and Section 2's CI-fix step aligned to match. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
borisbat
added a commit
that referenced
this pull request
Jun 21, 2026
Rewrite pr_review_iteration.md Section 1 around the loop we converged on while shipping the nightly-CI (#3237) and lint (#3239) PRs: iterate against Copilot (~5 min, free ruleset check), never block on the ~30-min CI matrix between rounds; only wait for green once Copilot is dry. A red EARLY during the loop is a free signal (jump on it); a red AFTER Copilot is dry loops back into Copilot (the fix is new code). Manual re-request is mandatory - review_on_push does not auto-fire on any push. Section 3: make the comment-triage bar conservative - default reject, accept only real bugs, real issues, or factually-incorrect text. Reject prose/wording nits (unless way off or factually wrong), unlikely/never- happen bugs, over-defensive guards, and suggestions that diverge from repo convention. Replaces the old "cosmetic accept" table row. Prose-tail note, quick-ref triage row, and Section 2's CI-fix step aligned to match. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Move the two heaviest, lowest-per-PR-signal lanes —
build_windows_mingwandbuild_windows_clangcl(~26 min each, alternative Windows toolchains) — off per-PR CI and onto a nightly schedule.In
build.yml:schedule:(daily 08:00 UTC) + the jobs already hadworkflow_dispatch.build_windows_mingw/build_windows_clangcl:if: … && (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch')→ run only nightly or on manual dispatch.buildmatrix /bundle_smoke/build_linux_gcc:if: … && github.event_name != 'schedule'→ stay per-PR/push, skip on the nightly schedule. So nightly runs only the two toolchains — no redundant nightly matrix.github.event_nameso a nightly run can't cancel an in-flight master-push run (or vice versa).Net: every PR drops ~52 lane-minutes of Windows-toolchain build; a toolchain regression still gets caught within ~24 h (or immediately via
gh workflow run build.yml --ref <branch>).The updated PR/CI workflow (documented here)
Context for why this is safe + how to work now (full detail in
skills/pr_review_iteration.md+skills/preflight.md):review_on_push) returns in ~5 min and is free (ruleset check, not a runner). The full matrix is ~30 min. So: push → ~5-min Copilot → fix → repeat, without sitting through the 30-min matrix each round. Only once Copilot is dry, wait the ~30 min for CI, then merge on green.review_on_push— prefer normal commits during iteration (squash-merge collapses them at the end); after a force-push, re-request Copilot manually.Note
This is the small remaining trim after closing the explicit-trigger experiment (#3234) — that approach was both redundant (free runners already solved the cost) and un-gateable (
workflow_dispatchruns aren't PR-associated, so the badge lied). This PR keeps the simple, honest, free model and just relocates the two long-poles to nightly.🤖 Generated with Claude Code