2.3 KiB
act_runner setup (octowow.st)
Stands up a self-hosted Gitea Actions runner as a container. One runner
registered at the user level serves all of your repos (GlueXML,
mpq-packager, …).
Prerequisites on the runner host
- Docker running. On Windows/macOS that means Docker Desktop with the Linux engine (WSL2 backend on Windows). Settings → Advanced → keep "Allow the default Docker socket to be used" enabled so the socket mount works.
1. Get a registration token
In the Gitea web UI, as your user:
avatar → Settings → Actions → Runners → Create new Runner
Copy the registration token (a long string). This is user-scoped, so the runner picks up jobs from any of your repos.
Direct link: https://octowow.st/git/user/settings/actions/runners
A repo-scoped token (repo → Settings → Actions → Runners) also works if you only want the runner tied to one repo.
2. Configure
cp .env.example .env
# edit .env: paste RUNNER_TOKEN, set RUNNER_NAME
3. Start
docker compose up -d
docker compose logs -f # watch it register
The runner should appear as Idle / online in the Runners list within a few seconds.
4. Enable Actions on each repo
Per repo: Settings → Actions → enable. New repos have it off by default.
5. Verify
Push a tag (or run a workflow) and watch it execute under the Actions tab.
For mpq-packager's release flow, a v* tag on a consuming repo builds the MPQ
and attaches it to a release.
Notes
- First job is slow — it pulls
catthehacker/ubuntu:act-latest(~1 GB) the first time; cached afterward. runs-onlabels must matchGITEA_RUNNER_LABELS. We mapubuntu-latest→catthehacker/ubuntu:act-latest. Add more pairs (comma-separated) to support other labels.- Docker actions (e.g.
uses: paste/mpq-packager@v1) work out of the box: act_runner builds and runs them via the mounted host socket. - Workflows that run
dockerCLI in a step (like this repo's own.gitea/workflows/ci.yml) need the job container to reach Docker too. The release workflow does not — it only uses the Docker action — so it's fine. Ask if you want the CI's docker-in-job case wired up. - Re-registering: delete
./dataanddocker compose up -dagain with a fresh token.