Files
modbison/docs/ci.md
T
daddy 02747cc266
checkpoint / checkpoint (push) Failing after 10s
CI: move workflow to .gitea/workflows/ (the instance is Gitea, not Forgejo)
The self-hosted git is gitea/gitea:latest (1.26), which reads
.gitea/workflows/ + .github/workflows/, not .forgejo/. Updated docs/ci.md
with the real enable steps (app.ini [actions], act_runner host-mode
register via `gitea actions generate-runner-token`, no web UI needed).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015jtxAiu5dAW4WxCNdGkrkJ
2026-09-05 22:32:50 +00:00

2.3 KiB

CI

.gitea/workflows/checkpoint.yml runs the full checkpoint suite (scripts/run_checkpoint_tests.py: migrations on a fresh DB, backend pytest, all Godot smoke tests, the 2-player multiplayer test, and the fresh-clone boot check) on every push to main and every PR.

It does not run yet — the self-hosted Gitea instance (git.cloudbison…, Gitea 1.26) has Actions disabled and no runner registered. This is a one-time operator setup on the AGP host.

Enabling it

1. Turn on Actions in Gitea

Add to /data/gitea/conf/app.ini inside the forgejo container (host path /DATA/AppData/forgejo/gitea/conf/app.ini):

[actions]
ENABLED = true

then docker restart forgejo.

2. Register a host runner

The suite starts Docker containers and runs the Godot binary, so a container runner would need docker-in-docker + a Godot image. act_runner in host execution mode runs jobs directly on the AGP box — where Docker, ~/godot/godot, and Python already live.

# on the AGP host
cd ~   # or wherever you keep the runner

# 2a. binary
curl -sL -o act_runner \
  https://gitea.com/gitea/act_runner/releases/download/v0.2.13/act_runner-0.2.13-linux-amd64
chmod +x act_runner

# 2b. registration token (no web UI needed)
TOKEN=$(docker exec forgejo gitea --config /data/gitea/conf/app.ini \
          actions generate-runner-token)

# 2c. register (host label -> jobs run directly on this machine)
./act_runner register --no-interactive \
  --instance http://localhost:3000 \
  --token "$TOKEN" \
  --name agp-host \
  --labels host:host

# 2d. run it (add a systemd unit for persistence)
./act_runner daemon

--labels host:host means "a label called host, executed on the host". The workflow's runs-on: host then matches it.

Security note: a host-mode runner executes whatever a workflow says, directly on the box, as the runner's user (which needs docker group membership). Fine for a single-maintainer private repo; revisit if the repo ever gets outside contributors.

3. Push a commit

The checkpoint workflow appears under the repo's Actions tab and gates merges.

Interim: run it by hand

python scripts/run_checkpoint_tests.py

— also what /checkpoint/<PC> on the dashboard runs before a playtest build.