ci: Windows legs run on workflow_dispatch only; Ubuntu gates push and PR #21

Merged
libby merged 1 commit from libby/ci-ubuntu-gate into main 2026-11-07 11:31:10 +00:00
Member

The forge runner is getting an ubuntu-latest label only (Docker, 1 job, 2 CPU). Windows and macOS jobs can never run there, so triggers that queue them just pile up as waiting.

Coverage that moved (nothing deleted)

Workflow / job Before After
cultnet-interop / interop (C#, TS, Rust, Python, Kotlin RUDP interop; windows-latest) push to main, every PR, dispatch workflow_dispatch only
cultmesh-portability / getting-started (matrix windows + ubuntu) push main and codex/**, PR, dispatch Ubuntu leg on push/PR/dispatch; Windows leg on workflow_dispatch only
cultmesh-portability / reactive-and-resource-lifetime (same matrix) same same split
quic-native / Build win32-x64 already workflow_dispatch or cultmesh-quic-native-v* tag only unchanged

macOS: no macOS jobs exist in these workflows.

What this loses

  • cultnet-interop has no Ubuntu job, so after this PR nothing gates cross-runtime interop on PR or push. The whole job is Windows-shaped (pwsh Kotlin build via build.ps1, pwsh steps, Windows-only Kotlin install). I did not write an untested Ubuntu port. It needs either a Windows runner or a follow-up that ports the job to Linux. Until then it runs by hand from workflow_dispatch.
  • Windows legs of cultmesh-portability are no longer on PRs; same follow-up applies.

Mechanism

The matrix is fromJSON(github.event_name == 'workflow_dispatch' && '["windows-latest","ubuntu-latest"]' || '["ubuntu-latest"]'). Job names keep their ${{ matrix.os }} form. Check-name consequence: the Windows-named checks no longer appear on PRs, so if branch protection requires them it must be updated.

Not touched

publish-packages.yml (tag triggers) and quic-native.yml. YAML parses for all four workflows. The fromJSON matrix is not exercised: the runners are stuck, so first confirmation is when the Ubuntu runner picks up this PR's jobs. No .NET build was attempted (no dotnet in this account).

🤖 Generated with Claude Code

The forge runner is getting an `ubuntu-latest` label only (Docker, 1 job, 2 CPU). Windows and macOS jobs can never run there, so triggers that queue them just pile up as `waiting`. ## Coverage that moved (nothing deleted) | Workflow / job | Before | After | |---|---|---| | `cultnet-interop` / `interop` (C#, TS, Rust, Python, Kotlin RUDP interop; `windows-latest`) | push to main, every PR, dispatch | **`workflow_dispatch` only** | | `cultmesh-portability` / `getting-started` (matrix windows + ubuntu) | push main and `codex/**`, PR, dispatch | Ubuntu leg on push/PR/dispatch; **Windows leg on `workflow_dispatch` only** | | `cultmesh-portability` / `reactive-and-resource-lifetime` (same matrix) | same | same split | | `quic-native` / `Build win32-x64` | already `workflow_dispatch` or `cultmesh-quic-native-v*` tag only | **unchanged** | macOS: no macOS jobs exist in these workflows. ## What this loses - **`cultnet-interop` has no Ubuntu job, so after this PR nothing gates cross-runtime interop on PR or push.** The whole job is Windows-shaped (pwsh Kotlin build via `build.ps1`, pwsh steps, Windows-only Kotlin install). I did not write an untested Ubuntu port. It needs either a Windows runner or a follow-up that ports the job to Linux. Until then it runs by hand from `workflow_dispatch`. - Windows legs of `cultmesh-portability` are no longer on PRs; same follow-up applies. ## Mechanism The matrix is `fromJSON(github.event_name == 'workflow_dispatch' && '["windows-latest","ubuntu-latest"]' || '["ubuntu-latest"]')`. Job names keep their `${{ matrix.os }}` form. Check-name consequence: the Windows-named checks no longer appear on PRs, so if branch protection requires them it must be updated. ## Not touched `publish-packages.yml` (tag triggers) and `quic-native.yml`. YAML parses for all four workflows. The `fromJSON` matrix is not exercised: the runners are stuck, so first confirmation is when the Ubuntu runner picks up this PR's jobs. No .NET build was attempted (no dotnet in this account). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
ci: Windows legs run on workflow_dispatch only; Ubuntu gates push and PR
Some checks failed
CultMesh QUIC native / Build win32-x64 (pull_request) Has been skipped
CultMesh QUIC native / Build linux-x64 (pull_request) Has been skipped
CultMesh QUIC native / Release native binaries (pull_request) Has been skipped
CultMesh portability and performance / ubuntu-latest one-command multiplayer onboarding (pull_request) Failing after 58s
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Failing after 6m37s
CultMesh QUIC native / Verify committed binaries match SHA256SUMS (pull_request) Successful in 1m56s
2897b4bad8
The forge runner is Ubuntu-only (Docker, one job), so Windows jobs queued on
push and pull_request can never run.

- cultnet-interop: the whole job is Windows-only; trigger is now workflow_dispatch.
- cultmesh-portability: both matrices keep windows-latest on workflow_dispatch
  and run ubuntu-latest alone on push and pull_request.
- quic-native: unchanged; Build win32-x64 already runs only on dispatch or a tag.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
libby merged commit 824a1545fd into main 2026-11-07 11:31:10 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
GameCult/CultLib!21
No description provided.