# Self-hosted Gitea Actions runners — per ADR-0015 §"Runners". # # Three act_runner instances registered with the project's Gitea # organisation, labelled self-hosted + on-prem (the labels referenced # by every job in .gitea/workflows/*). # # First-time registration, scaling, image pinning, and security notes # are documented in infra/README.md. name: apf-portal-ci-runners services: runner-1: image: gitea/act_runner:0.2.13 container_name: apf-portal-runner-1 restart: unless-stopped environment: GITEA_INSTANCE_URL: ${GITEA_INSTANCE_URL:?GITEA_INSTANCE_URL must be set in infra/.env} GITEA_RUNNER_REGISTRATION_TOKEN: ${GITEA_RUNNER_REGISTRATION_TOKEN:-} GITEA_RUNNER_NAME: apf-portal-runner-1 GITEA_RUNNER_LABELS: self-hosted,on-prem volumes: # Docker socket — see security note in infra/README.md. - /var/run/docker.sock:/var/run/docker.sock # Persistent state: runner credentials live here after first registration. - ./data/runner-1:/data networks: - act-runners runner-2: image: gitea/act_runner:0.2.13 container_name: apf-portal-runner-2 restart: unless-stopped environment: GITEA_INSTANCE_URL: ${GITEA_INSTANCE_URL:?GITEA_INSTANCE_URL must be set in infra/.env} GITEA_RUNNER_REGISTRATION_TOKEN: ${GITEA_RUNNER_REGISTRATION_TOKEN:-} GITEA_RUNNER_NAME: apf-portal-runner-2 GITEA_RUNNER_LABELS: self-hosted,on-prem volumes: - /var/run/docker.sock:/var/run/docker.sock - ./data/runner-2:/data networks: - act-runners runner-3: image: gitea/act_runner:0.2.13 container_name: apf-portal-runner-3 restart: unless-stopped environment: GITEA_INSTANCE_URL: ${GITEA_INSTANCE_URL:?GITEA_INSTANCE_URL must be set in infra/.env} GITEA_RUNNER_REGISTRATION_TOKEN: ${GITEA_RUNNER_REGISTRATION_TOKEN:-} GITEA_RUNNER_NAME: apf-portal-runner-3 GITEA_RUNNER_LABELS: self-hosted,on-prem volumes: - /var/run/docker.sock:/var/run/docker.sock - ./data/runner-3:/data networks: - act-runners networks: act-runners: name: apf-portal-act-runners