Run the gate, the editor suite and the three games on the Gitea runner
game-maker / suite (push) Successful in 7m31s

The job image (tools/ci/Dockerfile, label game-maker-ci) carries chromium with the Vulkan
drivers, php-cli and the host's fonts; the render device itself comes from the runner's
container.options, so a job container gets the Intel GPU instead of llvmpipe.

tools/ci/serve.sh puts the checkout behind /game-maker/ with php -S and writes the project
shells the seeders need; every tool now takes its server from GAME_MAKER_BASE_URL rather than
from a project id repeated in shell scripts.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
rootandClaude Opus 5 committed 2026-09-12 20:01:45 +02:00
1 parent c47fd5e4dc
commit 4f0908df77
8 files changed
+181 -4

No files matched your search

+19 -1
View File
@@ -788,7 +788,7 @@ npm test # unit tests (core, editor, ui, viewport)
npm run typecheck
npm run lint # ESLint (type-aware for src and tests); lint:fix for the fixable half
npm run format # Prettier over the repo, minus what .prettierignore lists
npm run check # typecheck + lint + format:check + tests, what CI would run
npm run check # typecheck + lint + format:check + tests, the gate CI runs too
./check.sh # the same, ending in `=== CHECK EXIT n ===`: piped into `tail` npm's exit
# code is lost (tail's is reported), so a red run reads as green
npm run build # writes dist/ and regenerates index.html
@@ -914,6 +914,24 @@ he walks on the spot – a clock that ticks without the picture following would
The workspace folder itself is what nginx serves, so `npm run build` is the deployment.
### Continuous integration
Every push runs the whole proof on the Gitea runner: `.gitea/workflows/ci.yml` installs, runs
`./check.sh`, builds, then `tools/ci/run-e2e.sh` (the editor suite) and `tools/ci/run-smokes.sh`
(the three games). Both scripts source `tools/ci/serve.sh`, which puts the checkout behind
`http://127.0.0.1:8080/game-maker/` with `php -S` – the build wires its assets absolutely under
`/game-maker/dist/`, so the path segment is not optional – and writes the empty project files the
seeders need (`PUT` does not create a project, `POST` hands out a random id). Every tool takes its
server from `GAME_MAKER_BASE_URL`.
The job runs in the image from `tools/ci/Dockerfile` under the label `game-maker-ci`: chromium
with the Vulkan drivers, `php-cli`, and the host's font packages, because the checks measure text
widths to find click points. The **render device is not in this repo** – `/dev/dri/renderD128`
and a 1 GB `/dev/shm` come from `container.options` in the runner's own `config.yaml`, which
applies to every job on that runner. Without them chromium falls back to llvmpipe, which gets
WebGL 1.0 only. Measured in the job container: `ANGLE (Intel, Vulkan 1.3.230, HD Graphics 630)`,
WebGL 2.0, and the same 671 checks as here.
### Ideas, gaps and bugs
They live in the issue tracker of the Gitea repo: <https://git.nockal.com/meleki/game-maker/issues>.