Files
feuerwerk/.gitea/workflows/ci.yml
T
adminandClaude Opus 5.5 857e23c69b
game-maker / gate (push) Successful in 3m18s
game-maker / suite (push) Failing after 14m15s
Run CI on a WSL2 runner with the RTX 4070 (#283)
stein2 should stop carrying the full e2e run. The new runner lives in
the WSL2 distro game-maker-ci on melektaus-atx and uses the same image
and fonts. Its GPU sits behind /dev/dxg and Mesa's d3d12 driver, which
headless chromium cannot reach, so the harness gets a second way to
start the browser.

- GAME_MAKER_BROWSER=wsl starts an invisible Xvfb and an X11 chromium
  on ANGLE/GL. Without the variable, stein2 keeps the headless Vulkan
  launch exactly as before.
- The harness logs the renderer and stops on software rendering.
  Under WSL a missing d3d12 driver falls back to llvmpipe, which still
  offers WebGL 2 and would pass unnoticed.
- The CI image gains xvfb. The font set is unchanged: fc-list gives
  the same 149 fonts with the same hash.
- ci.yml runs both jobs on the new label game-maker-wsl. The stein2
  runner keeps game-maker-ci, so moving back is one line per job.

Findings:
- Wayland on weston reached the GPU too, but drew at about 40 fps and
  let the editor clock stall in long runs (GM_STEPS=1-17: 2 failed).
- Vulkan through a self-built dzn caps ANGLE at ES 2.0 because
  VK_EXT_provoking_vertex is missing, so chromium drops the GPU.
- The flaky check in e2e 41 (#282) fails more often under WSL: two of
  three solo runs were red.

Tests:
- ./check.sh: 195 files, 2823 tests passed
- WSL container, GM_STEPS=1-17: ALL PASSED, 553 checks
- WSL container, full run: 1589 of 1590, the one FAIL is #282
- WSL container, smokes: 24 / 19 / 21 checks
- stein2 headless, e2e 39+40: ALL PASSED, 100 checks

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 20:56:50 +02:00

70 lines
2.3 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.
#
# 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.
#
# 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.
name: game-maker
on:
push:
workflow_dispatch:
jobs:
gate:
runs-on: game-maker-wsl
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- name: Install
run: npm ci --no-audit --no-fund
- name: Gate
run: ./check.sh
env:
GM_TEST_WORKERS: 2
# The API's own rules (#180, #179, #231, #266). Not part of check.sh: the host the editor is built
# on has no PHP, the image does.
- name: PHP tests
run: |
php tests/php/accounts.test.php
php tests/php/snapshots.test.php
php tests/php/releases.test.php
suite:
runs-on: game-maker-wsl
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
- name: Versions
run: |
node --version
chromium --version
php --version | head -1
- name: Install
run: npm ci --no-audit --no-fund
- name: Build
run: npm run build
- name: Editor suite
run: tools/ci/run-e2e.sh
- name: Example games
run: tools/ci/run-smokes.sh