Files
modbison/docs/ci.md
daddy 67473dddcd
checkpoint / checkpoint (push) Successful in 1m33s
CI is live: Gitea Actions + host act_runner, first green run
docs/ci.md updated to reflect the running state + the one sudo command to
make the runner a permanent systemd service.

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

1.8 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.

Status: live

Set up 2026-09-05:

  • Gitea Actions enabled ([actions] ENABLED = true in /DATA/AppData/forgejo/gitea/conf/app.ini, container restarted; a timestamped .bak is next to it).
  • act_runner v0.2.13 registered as agp-host with label host (host execution mode — jobs run directly on the AGP box, which already has Docker, ~/godot/godot, and Python). Lives in ~/act-runner/.
  • Green on the first successful run (d76bf4d).

The workflow uses no JavaScript actions (no actions/checkout), so the host needs no Node: checkout is a shallow git fetch from the local Gitea using the injected ${{ github.token }}, and the suite runs in a venv the job builds (host Python is PEP-668 externally-managed).

Make the runner permanent (one command, needs sudo)

The runner currently runs as a plain background process — it won't survive a reboot. A unit file is ready at ~/act-runner/act-runner.service:

sudo cp ~/act-runner/act-runner.service /etc/systemd/system/
sudo systemctl daemon-reload
pkill -f 'act_runner daemon'          # stop the temporary background one
sudo systemctl enable --now act-runner

Interim / local

python scripts/run_checkpoint_tests.py

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

Security note

A host-mode runner executes whatever a workflow says, directly on the box, as daddy (in the docker group). Fine for a single-maintainer private repo; revisit if the repo gets outside contributors (switch to a docker-mode runner or an isolated VM).