Prime's CI fix A. ana-docker's runner sits on HDD mirrors with no SLOG; synced 8 KiB writes measured ~34 ms there vs ~2.7 ms on nh3-docker (same probe, one run, n=3 each). Repos opt in with runs-on: nh3-docker; the runner carries no pfi-fleet label. Its config is tighter because nh3-docker also runs NH3 DNS and the post office: docker_host '-' (verified absent in the job, present on the ana-docker baseline), capacity 1, jobs capped at 4 GiB / 6 CPUs, a network per job. The deploy playbook takes runner_config; each runner's homepage name is its runner name.
39 lines
1.2 KiB
YAML
39 lines
1.2 KiB
YAML
# Gitea Actions self-hosted runner.
|
|
#
|
|
# Polls https://gitea.phasefinal.com for queued jobs and runs them in
|
|
# ephemeral job-containers spawned via the host docker socket. The
|
|
# runner registers itself on first start using
|
|
# GITEA_RUNNER_REGISTRATION_TOKEN; subsequent starts reuse credentials
|
|
# cached at ${DATA_DIR}/.runner.
|
|
#
|
|
# Tunables live in .env. config.yaml controls runner internals (job
|
|
# timeouts, capacity, container engine settings) — edit conf/config.yaml,
|
|
# don't inline that here.
|
|
|
|
services:
|
|
runner:
|
|
image: ${RUNNER_IMAGE}
|
|
container_name: gitea-runner
|
|
restart: unless-stopped
|
|
environment:
|
|
- GITEA_INSTANCE_URL=${GITEA_INSTANCE_URL}
|
|
- GITEA_RUNNER_REGISTRATION_TOKEN=${GITEA_RUNNER_REGISTRATION_TOKEN}
|
|
- GITEA_RUNNER_NAME=${GITEA_RUNNER_NAME}
|
|
- GITEA_RUNNER_LABELS=${GITEA_RUNNER_LABELS}
|
|
- CONFIG_FILE=/data/config.yaml
|
|
volumes:
|
|
- ${DATA_DIR}:/data
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
networks:
|
|
- tnet
|
|
labels:
|
|
- homepage.group=Agents (no UI)
|
|
- homepage.name=${GITEA_RUNNER_NAME}
|
|
- homepage.icon=mdi-cog-play
|
|
- homepage.description=Gitea Actions self-hosted runner (${GITEA_RUNNER_NAME})
|
|
|
|
networks:
|
|
tnet:
|
|
name: traefik-net
|
|
external: true
|