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>
57 lines
2.6 KiB
Bash
57 lines
2.6 KiB
Bash
#!/bin/bash
|
||
# Sourced, not run: it leaves the PHP server in the caller's background and exports
|
||
# 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 FEUERWERK_BASE_URL=http://127.0.0.1:8080/feuerwerk/
|
||
|
||
feuerwerk_serve() {
|
||
local root
|
||
root=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)
|
||
|
||
mkdir -p "$root/data/projects" "$root/data/textures"
|
||
node "$root/tools/ci/project-shells.mjs"
|
||
|
||
# Since #177 the API needs a session, and the check tools sign in as `e2e`. A fresh checkout has
|
||
# no accounts at all, so the job makes the one it needs, with a password of its own.
|
||
if [ ! -f "$root/data/e2e-password.txt" ]; then
|
||
head -c 24 /dev/urandom | base64 | tr -d '\n' >"$root/data/e2e-password.txt"
|
||
echo >>"$root/data/e2e-password.txt"
|
||
fi
|
||
php "$root/tools/make-user.php" e2e "$(cat "$root/data/e2e-password.txt")"
|
||
# The user management step (#179) needs an administrator of its own; it owns no project.
|
||
if [ ! -f "$root/data/e2e-admin-password.txt" ]; then
|
||
head -c 24 /dev/urandom | base64 | tr -d '\n' >"$root/data/e2e-admin-password.txt"
|
||
echo >>"$root/data/e2e-admin-password.txt"
|
||
fi
|
||
php "$root/tools/make-user.php" e2e-admin "$(cat "$root/data/e2e-admin-password.txt")" admin
|
||
|
||
# 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 "${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
|
||
# 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 "${FEUERWERK_BASE_URL}api/index.php?r=auth/session" >/dev/null 2>&1 && break
|
||
sleep 0.5
|
||
done
|
||
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 $FEUERWERK_BASE_URL"
|
||
}
|