Move repo, CI and the video worker over to the name Feuerwerk (#422)
feuerwerk / gate (push) Successful in 4m30s
feuerwerk / suite (push) Successful in 18m38s

Stage 3 of the rename. The repo now lives at meleki/feuerwerk, the
runners carry feuerwerk labels and the WSL distro on melektaus-atx is
called feuerwerk-ci. The code has to follow, or CI finds no runner and
the suite no longer picks the GPU path.

- ci.yml: workflow name feuerwerk, jobs on feuerwerk-ci (gate, stein2)
  and feuerwerk-wsl (suite, melektaus-atx).
- GAME_MAKER_* variables are now FEUERWERK_*. This includes
  FEUERWERK_BROWSER=wsl, which the runner config on melektaus-atx sets.
- The video worker runs as container feuerwerk-video with the image
  feuerwerk-video and works on /srv/feuerwerk.
- e2e.sh starts the unit feuerwerk-e2e, the CI image keeps its paths
  under the new name.
- README and repo links point to git.nockal.com/meleki/feuerwerk. The
  old URLs still redirect with 301.

Both runners keep their old labels until the first CI run with this
ci.yml is through. Then they go, together with the image tag
game-maker-ci:latest and GAME_MAKER_BROWSER in the atx config.

Tests:
- Gate on melektaus-atx through the renamed distro: CHECK EXIT 0,
  307 files, 4756 tests.
- e2e 60 on melektaus-atx: ALL PASSED, 20 checks. Renderer is the
  RTX 4070 through D3D12, so FEUERWERK_BROWSER reaches the GPU path.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
adminandClaude Opus 5.5 committed 2026-10-13 13:42:52 +02:00
1 parent 043c224cc3
commit 6097307b6d
16 files changed
+78 -78

No files matched your search

+4 -4
View File
@@ -1,7 +1,7 @@
# The image behind the Gitea Actions label `game-maker-ci`. It is built on the host and kept
# The image behind the Gitea Actions label `feuerwerk-ci`. It is built on the host and kept
# local (the runner has `force_pull: false`), so a change here needs a rebuild:
#
# DOCKER_BUILDKIT=0 docker build --network git_default -t game-maker-ci:latest tools/ci
# DOCKER_BUILDKIT=0 docker build --network git_default -t feuerwerk-ci:latest tools/ci
#
# Both flags are needed on stein2: DNS is dead in Docker's default bridge network, and Buildkit
# cannot join a named network.
@@ -10,11 +10,11 @@ FROM node:22-bookworm
# chromium + the Vulkan drivers: the e2e harness starts chromium with --use-angle=vulkan and has
# no software fallback. The render device itself comes from the runner's container.options;
# without it chromium falls back to llvmpipe and gets WebGL 1.0 only.
# xvfb serves the other GPU path, GAME_MAKER_BROWSER=wsl (tools/lib/browser.mjs): under WSL2 the
# xvfb serves the other GPU path, FEUERWERK_BROWSER=wsl (tools/lib/browser.mjs): under WSL2 the
# GPU is /dev/dxg behind Mesa's d3d12 driver, which headless chromium cannot reach, an X11 one can.
# php-cli serves api/index.php, which every tool loads and saves its project through.
# ffmpeg converts uploaded videos (#402), through tools/video-worker.php like the container
# game-maker-video on stein2 does.
# feuerwerk-video on stein2 does.
# The fonts are the host's set on purpose: the checks measure text widths to find click points,
# so a different set moves them.
RUN apt-get update && apt-get install -y --no-install-recommends \
+8 -8
View File
@@ -1,11 +1,11 @@
#!/bin/bash
# Sourced, not run: it leaves the PHP server in the caller's background and exports
# GAME_MAKER_BASE_URL, which every tool reads.
# FEUERWERK_BASE_URL, which every tool reads.
#
# The build wires its assets absolutely under /feuerwerk/dist/, so the checkout has to be
# served under that path segment – hence the symlink into /srv rather than `-t .`.
export GAME_MAKER_BASE_URL=http://127.0.0.1:8080/feuerwerk/
export FEUERWERK_BASE_URL=http://127.0.0.1:8080/feuerwerk/
feuerwerk_serve() {
local root
@@ -30,27 +30,27 @@ feuerwerk_serve() {
# A server from an earlier step of the same job is fine to keep. Asked of the one route that
# answers without a session, so "is it up" does not depend on being signed in.
if curl -sf "${GAME_MAKER_BASE_URL}api/index.php?r=auth/session" >/dev/null 2>&1; then
echo "server already up at $GAME_MAKER_BASE_URL"
if curl -sf "${FEUERWERK_BASE_URL}api/index.php?r=auth/session" >/dev/null 2>&1; then
echo "server already up at $FEUERWERK_BASE_URL"
return 0
fi
mkdir -p /srv && ln -sfn "$root" /srv/feuerwerk
# Uploaded videos are converted by the worker (#402); on stein2 that is the container
# game-maker-video, here a process beside the server.
# feuerwerk-video, here a process beside the server.
php "$root/tools/video-worker.php" "$root/data" >/tmp/video-worker.log 2>&1 &
# Without workers the single-threaded dev server stalls: the editor fetches project and
# textures in parallel. The router serves videos with Range requests, see there.
PHP_CLI_SERVER_WORKERS=8 php -S 0.0.0.0:8080 -t /srv "$root/tools/ci/router.php" >/tmp/php-server.log 2>&1 &
for _ in $(seq 60); do
curl -sf "${GAME_MAKER_BASE_URL}api/index.php?r=auth/session" >/dev/null 2>&1 && break
curl -sf "${FEUERWERK_BASE_URL}api/index.php?r=auth/session" >/dev/null 2>&1 && break
sleep 0.5
done
if ! curl -sf "${GAME_MAKER_BASE_URL}api/index.php?r=auth/session" >/dev/null 2>&1; then
if ! curl -sf "${FEUERWERK_BASE_URL}api/index.php?r=auth/session" >/dev/null 2>&1; then
echo "the server never came up" >&2
tail -20 /tmp/php-server.log >&2
return 1
fi
echo "serving $root at $GAME_MAKER_BASE_URL"
echo "serving $root at $FEUERWERK_BASE_URL"
}