Skip to content

ci: move mingw + clang-cl Windows builds to nightly#3237

Merged
borisbat merged 8 commits into
masterfrom
bbatkin/ci-nightly-toolchains
Jun 21, 2026
Merged

ci: move mingw + clang-cl Windows builds to nightly#3237
borisbat merged 8 commits into
masterfrom
bbatkin/ci-nightly-toolchains

Conversation

@borisbat

Copy link
Copy Markdown
Collaborator

What

Move the two heaviest, lowest-per-PR-signal lanes — build_windows_mingw and build_windows_clangcl (~26 min each, alternative Windows toolchains) — off per-PR CI and onto a nightly schedule.

In build.yml:

  • Added schedule: (daily 08:00 UTC) + the jobs already had workflow_dispatch.
  • build_windows_mingw / build_windows_clangcl: if: … && (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') → run only nightly or on manual dispatch.
  • build matrix / 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.
  • Concurrency key now includes github.event_name so 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):

  • CI is free + auto-runs on every push (public-repo standard runners, since the free-runner switch in ci: switch all runners to standard free runners (temporary, unblock spending limit) #3233) → the PR badge gates honestly on the latest commit.
  • Iterate against Copilot, not the matrix. Copilot review (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.
  • A force-push doesn't trigger 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_dispatch runs 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

Copilot AI review requested due to automatic review settings June 21, 2026 04:20

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 schedule trigger and gate MinGW/clang-cl jobs to run only on schedule or workflow_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_name to 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.

Comment thread .github/workflows/build.yml
Comment thread skills/preflight.md Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

Comment thread skills/preflight.md Outdated
…review_on_push did not auto-fire on pushes in testing)

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 6 comments.

Comment thread skills/preflight.md Outdated
Comment thread skills/preflight.md Outdated
Comment thread skills/preflight.md Outdated
Comment thread .github/workflows/build.yml Outdated
Comment thread .github/workflows/build.yml Outdated
Comment thread .github/workflows/build.yml
…bs + both toolchains); only the cron schedule runs toolchains alone (per Copilot)

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

Comment thread skills/preflight.md Outdated
Comment thread skills/pr_review_iteration.md Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

Comment thread .github/workflows/build.yml Outdated
Comment thread skills/preflight.md Outdated
Comment thread skills/preflight.md Outdated
…dispatch-note contradiction + mingw run-on (per Copilot)

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

Comment thread skills/preflight.md

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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_mingw runs gh cache delete ... (see the "Refresh sccache slot" step later in this job), but the job does not request actions: write permissions. Other jobs that delete caches (e.g. the build matrix) 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}

Comment thread skills/preflight.md Outdated
@borisbat borisbat requested a review from Copilot June 21, 2026 05:14

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.

@borisbat borisbat merged commit 9adaf2f into master Jun 21, 2026
32 checks passed
@borisbat borisbat deleted the bbatkin/ci-nightly-toolchains branch June 21, 2026 06:14
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>
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.

2 participants