Skip to content

Report ci-ok on every PR run; run Windows-on-label separately - #31

Merged
Myrras merged 3 commits into
mainfrom
fix/ci-ok-on-label
Oct 29, 2026
Merged

Myrras merged 3 commits into
mainfrom
fix/ci-ok-on-label

Conversation

@Myrras

@Myrras Myrras commented Oct 29, 2026

Copy link
Copy Markdown
Owner

Cause

GitHub judges a required check by the latest run of its workflow on the head commit. ci.yml also listened to labeled, and its ci job was skipped for any label other than windows. A PR created with release:patch gets an opened run and, seconds later, a labeled run. When the labeled run is the latest, it reports no ci / ci-ok: the required check shows "Expected — Waiting for status to be reported" and the PR stays BLOCKED with every check green. Whether it happens depends on the order the events arrive in.

Example: Myrras/Podium#143 (also Myrras/Selene#89, Myrras/Argus#25, all on v2 = 9adbdae). Myrras/Iris#27 is clean only because its events arrived in the right order.

Design

  • ci.yml triggers on push to main and pull_request opened/synchronize/reopened. No label events and no if: on the ci job, so every run reports ci / ci-ok. Concurrency: one group per ref, cancel only on synchronize.
  • ci-windows.yml (new, synced to the apps) triggers on pull_request opened/synchronize/reopened/labeled. A windows label job starts only when the event says windows (the label just added, or a commit event whose payload has it); other labels skip it without a runner. It waits 10 s and confirms the label via gh pr view --json labels, then calls the CI workflow with only: windows. Checks are ci-windows / ... and are not required. Concurrency as in Stop label events from leaving cancelled required checks #30: commit runs share a group and cancel on synchronize; every label run has its own group, so nothing on the head commit is ever cancelled.
  • reusable-tauri-ci.yml: new input only (empty = all jobs; windows = only config + windows, no frontend/rust/ci-ok). windows: auto now means every event except pull requests: the reusable reads no labels. Input validation moved from ci-ok to the config job, so only: windows still validates. ci-ok semantics unchanged: fails on a failed or cancelled needed job, a skipped windows is fine.
  • No duplicates: on a PR, Windows runs only in ci-windows.yml (once per commit while labelled, once per label add). ci.yml runs Windows only on push to main, where it still gates the release.
  • Trade-off: a Windows failure on a PR no longer blocks the merge (before, it did only if the label run happened to be the latest). main still gates the release.

Updated: rust-base's own callers, sync/files/.github/workflows/ (incl. the new ci-windows.yml), examples/, README (Windows section, callers, required checks, caller requirements), CLAUDE.md and sync/CLAUDE.block.md. rust-base's own ci.yml keeps having no release job.

Rollout

The synced ci-windows.yml passes only, which v2 doesn't have yet. Move v2 to the merge commit before the apps merge their sync PRs. The new reusable is compatible with the old app callers.

@Myrras Myrras added windows Run the Windows CI checks on this PR no-release Merge without a release (CI, config, docs) labels Oct 29, 2026
@Myrras Myrras added tmp-ci-test windows Run the Windows CI checks on this PR and removed windows Run the Windows CI checks on this PR tmp-ci-test labels Oct 29, 2026
@Myrras Myrras added the windows Run the Windows CI checks on this PR label Oct 29, 2026
@Myrras
Myrras merged commit dc34e58 into main Oct 29, 2026
18 checks passed
@Myrras
Myrras deleted the fix/ci-ok-on-label branch October 29, 2026 12:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no-release Merge without a release (CI, config, docs) windows Run the Windows CI checks on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant