Run the gate on stein2 and the suite on the WSL runner (#283)
game-maker / gate (push) Successful in 2m34s
game-maker / suite (push) Successful in 12m58s

The gate needs no GPU, so it goes back to the runner on stein2
(`game-maker-ci`, same image). The suite stays on `game-maker-wsl` on
melektaus-atx. The two jobs no longer share the four cores of one
runner while they overlap.

- The change of `runs-on` for the gate is the user's own edit.
- The header comment now says which job runs where. GM_TEST_WORKERS
  stays at two, for the day both jobs share one runner again.

Tests:
- Both runners were online in Gitea before the push
  (`stein2-docker`, `melektaus-atx-wsl`).
- Prettier passes on the file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
adminandClaude Opus 5.5 committed 2026-09-29 22:48:49 +02:00
1 parent 543b052136
commit 42647d309b
1 file changed
+13 -14
+13 -14
View File
@@ -1,20 +1,19 @@
# Runs the whole proof on the Gitea runner: gate, the editor suite and the three example games.
#
# `runs-on: game-maker-wsl` is the runner in the WSL2 distro game-maker-ci on melektaus-atx
# (#283). Its label picks the image built from tools/ci/Dockerfile. The GPU (/dev/dxg and the
# Windows driver libraries), /dev/shm and GAME_MAKER_BROWSER=wsl come from that runner's own
# config.yaml, not from here – without them chromium falls back to software WebGL and the harness
# stops. The runner on stein2 still carries `game-maker-ci` with the same image and its Intel
# GPU; pointing both jobs back at that label moves the runs there again.
# The suite runs on `game-maker-wsl`, the runner in the WSL2 distro game-maker-ci on
# melektaus-atx (#283). Its label picks the image built from tools/ci/Dockerfile. The GPU
# (/dev/dxg and the Windows driver libraries), /dev/shm and GAME_MAKER_BROWSER=wsl come from that
# runner's own config.yaml, not from here – without them chromium falls back to software WebGL and
# the harness stops. The gate needs no GPU and runs on `game-maker-ci`, the runner on stein2 with
# the same image. Pointing the suite at that label too moves the browser runs back to stein2.
#
# Two jobs without `needs:`, so they start together and use both slots of the runner
# (`capacity: 2`, four cores on either host). The gate no longer stands in front of the suite:
# a lint error used to cost the full e2e run before it was reported, and the run reported it
# after six minutes instead of one. Both still have to pass for the push to be green.
# Two jobs without `needs:`, so they start together. The gate does not stand in front of the
# suite: a lint error used to cost the full e2e run before it was reported, and the run reported
# it after six minutes instead of one. Both still have to pass for the push to be green.
#
# The price is contention: while the gate runs, vitest and chromium share the four cores, and the
# suite measures text widths and frame counts. That is why the gate caps vitest at two workers
# (GM_TEST_WORKERS) – two cores stay free for the browser for the whole overlap.
# On two runners the gate's vitest no longer shares cores with the suite's chromium, which
# measures text widths and frame counts. GM_TEST_WORKERS still caps vitest at two workers, for the
# day both jobs share one runner again.
name: game-maker
on:
@@ -23,7 +22,7 @@ on:
jobs:
gate:
runs-on: game-maker-wsl
runs-on: game-maker-ci
timeout-minutes: 20
steps:
- uses: actions/checkout@v4