# 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`): ```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. ```bash # 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 ```bash python scripts/run_checkpoint_tests.py ``` — also what `/checkpoint/` on the dashboard runs before a playtest build.