From 42647d309b6dba906a87e661c4cf37602d322d16 Mon Sep 17 00:00:00 2001 From: MelekTaus Date: Tue, 29 Sep 2026 22:48:49 +0200 Subject: [PATCH] Run the gate on stein2 and the suite on the WSL runner (#283) 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 --- .gitea/workflows/ci.yml | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 1d901c70..d3681309 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -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