tf-services/docker-compose.runners.yml
Natalie 4e4d9e7427 feat(tf-services): Forgejo Actions + co-located runners
Enable [actions] on all 3 forges (cloud-init). Add docker-compose.runners.yml:
3 act_runner containers (one per forge) co-located on com.uvlava.quinn.artifacts,
sharing the forges' docker net, executing repo .forgejo/workflows. Reg tokens are
runtime secrets (per-forge admin registration-token), never committed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 04:34:56 -04:00

38 lines
1.8 KiB
YAML

# Forgejo Actions runners — co-located on com.uvlava.quinn.artifacts, one per forge.
# Standing runners (always-on) executing each repo's .forgejo/workflows (semver/build/publish).
# Registration tokens are RUNTIME secrets (per forge, from /api/v1/admin/runners/registration-token),
# injected at deploy — NEVER committed. Templated here; fill GITEA_RUNNER_REGISTRATION_TOKEN per runner.
# On-demand burst scaling (beyond these standing runners) is the separate ci-runners terraform.
# Deploy: docker compose -f docker-compose.runners.yml up -d (shares the forges' services_default net)
services:
runner-ct:
image: gitea/act_runner:latest
restart: always
environment:
GITEA_INSTANCE_URL: "http://forgejo-ct:3000"
GITEA_RUNNER_REGISTRATION_TOKEN: "__CT_REGTOKEN__"
GITEA_RUNNER_NAME: "artifacts-ct"
GITEA_RUNNER_LABELS: "ubuntu-latest:docker://node:20-bookworm,docker:docker://node:20-bookworm"
volumes: [ /var/run/docker.sock:/var/run/docker.sock, /opt/services/runner-ct:/data ]
runner-mc:
image: gitea/act_runner:latest
restart: always
environment:
GITEA_INSTANCE_URL: "http://forgejo-mc:3000"
GITEA_RUNNER_REGISTRATION_TOKEN: "__MC_REGTOKEN__"
GITEA_RUNNER_NAME: "artifacts-mc"
GITEA_RUNNER_LABELS: "ubuntu-latest:docker://node:20-bookworm"
volumes: [ /var/run/docker.sock:/var/run/docker.sock, /opt/services/runner-mc:/data ]
runner-quinn:
image: gitea/act_runner:latest
restart: always
environment:
GITEA_INSTANCE_URL: "http://forgejo-quinn:3000"
GITEA_RUNNER_REGISTRATION_TOKEN: "__QUINN_REGTOKEN__"
GITEA_RUNNER_NAME: "artifacts-quinn"
GITEA_RUNNER_LABELS: "ubuntu-latest:docker://node:20-bookworm"
volumes: [ /var/run/docker.sock:/var/run/docker.sock, /opt/services/runner-quinn:/data ]
networks:
default:
name: services_default
external: true