154 lines
4.5 KiB
YAML
154 lines
4.5 KiB
YAML
# Gitea Actions runners — 3 parallel runners, each with its own dind sidecar.
|
|
#
|
|
# Each runner gets an isolated Docker daemon rather than the host socket, so a
|
|
# CI job cannot reach the other ~180 containers on this box. Cost: each dind
|
|
# keeps its own image cache under ./volumes/runner-N/dind.
|
|
#
|
|
# The pre-existing host runner (/home/gib/.local/bin/act_runner, name
|
|
# "server-gib") is intentionally left running.
|
|
#
|
|
# Registration token generated with:
|
|
# docker exec -u git gitea gitea actions generate-runner-token
|
|
# It is reusable — all three runners register with the same one.
|
|
|
|
networks:
|
|
nginx-bridge:
|
|
external: true
|
|
|
|
x-runner-env: &runner-env
|
|
TZ: America/New_York
|
|
GITEA_INSTANCE_URL: https://git.gbrown.org
|
|
GITEA_RUNNER_REGISTRATION_TOKEN: ${GITEA_RUNNER_REGISTRATION_TOKEN}
|
|
GITEA_RUNNER_LABELS: "ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest,ubuntu-24.04:docker://docker.gitea.com/runner-images:ubuntu-24.04,ubuntu-22.04:docker://docker.gitea.com/runner-images:ubuntu-22.04,build:docker://docker.gitea.com/runner-images:ubuntu-latest"
|
|
DOCKER_TLS_VERIFY: "1"
|
|
DOCKER_CERT_PATH: /certs/client
|
|
CONFIG_FILE: /data/config.yml
|
|
|
|
x-dind-env: &dind-env
|
|
TZ: America/New_York
|
|
DOCKER_TLS_CERTDIR: /certs
|
|
|
|
services:
|
|
gitea-runner-1:
|
|
image: gitea/act_runner:latest
|
|
container_name: gitea-runner-1
|
|
hostname: gitea-runner-1
|
|
domainname: git.gbrown.org
|
|
networks: ['nginx-bridge']
|
|
environment:
|
|
<<: *runner-env
|
|
GITEA_RUNNER_NAME: gitea-runner-1
|
|
DOCKER_HOST: tcp://gitea-runner-1-dind:2376
|
|
labels:
|
|
com.centurylinklabs.watchtower.enable: "true"
|
|
volumes:
|
|
- ./volumes/runner-1/data:/data
|
|
- ./volumes/runner-1/certs:/certs
|
|
- /etc/localtime:/etc/localtime:ro
|
|
depends_on:
|
|
- gitea-runner-1-dind
|
|
tty: true
|
|
stdin_open: true
|
|
restart: unless-stopped
|
|
|
|
gitea-runner-1-dind:
|
|
image: docker:dind
|
|
container_name: gitea-runner-1-dind
|
|
hostname: gitea-runner-1-dind
|
|
domainname: git.gbrown.org
|
|
networks: ['nginx-bridge']
|
|
privileged: true
|
|
environment:
|
|
<<: *dind-env
|
|
labels:
|
|
com.centurylinklabs.watchtower.enable: "true"
|
|
volumes:
|
|
- ./volumes/runner-1/certs:/certs
|
|
- ./volumes/runner-1/dind:/var/lib/docker
|
|
- /etc/localtime:/etc/localtime:ro
|
|
tty: true
|
|
stdin_open: true
|
|
restart: unless-stopped
|
|
|
|
gitea-runner-2:
|
|
image: gitea/act_runner:latest
|
|
container_name: gitea-runner-2
|
|
hostname: gitea-runner-2
|
|
domainname: git.gbrown.org
|
|
networks: ['nginx-bridge']
|
|
environment:
|
|
<<: *runner-env
|
|
GITEA_RUNNER_NAME: gitea-runner-2
|
|
DOCKER_HOST: tcp://gitea-runner-2-dind:2376
|
|
labels:
|
|
com.centurylinklabs.watchtower.enable: "true"
|
|
volumes:
|
|
- ./volumes/runner-2/data:/data
|
|
- ./volumes/runner-2/certs:/certs
|
|
- /etc/localtime:/etc/localtime:ro
|
|
depends_on:
|
|
- gitea-runner-2-dind
|
|
tty: true
|
|
stdin_open: true
|
|
restart: unless-stopped
|
|
|
|
gitea-runner-2-dind:
|
|
image: docker:dind
|
|
container_name: gitea-runner-2-dind
|
|
hostname: gitea-runner-2-dind
|
|
domainname: git.gbrown.org
|
|
networks: ['nginx-bridge']
|
|
privileged: true
|
|
environment:
|
|
<<: *dind-env
|
|
labels:
|
|
com.centurylinklabs.watchtower.enable: "true"
|
|
volumes:
|
|
- ./volumes/runner-2/certs:/certs
|
|
- ./volumes/runner-2/dind:/var/lib/docker
|
|
- /etc/localtime:/etc/localtime:ro
|
|
tty: true
|
|
stdin_open: true
|
|
restart: unless-stopped
|
|
|
|
gitea-runner-3:
|
|
image: gitea/act_runner:latest
|
|
container_name: gitea-runner-3
|
|
hostname: gitea-runner-3
|
|
domainname: git.gbrown.org
|
|
networks: ['nginx-bridge']
|
|
environment:
|
|
<<: *runner-env
|
|
GITEA_RUNNER_NAME: gitea-runner-3
|
|
DOCKER_HOST: tcp://gitea-runner-3-dind:2376
|
|
labels:
|
|
com.centurylinklabs.watchtower.enable: "true"
|
|
volumes:
|
|
- ./volumes/runner-3/data:/data
|
|
- ./volumes/runner-3/certs:/certs
|
|
- /etc/localtime:/etc/localtime:ro
|
|
depends_on:
|
|
- gitea-runner-3-dind
|
|
tty: true
|
|
stdin_open: true
|
|
restart: unless-stopped
|
|
|
|
gitea-runner-3-dind:
|
|
image: docker:dind
|
|
container_name: gitea-runner-3-dind
|
|
hostname: gitea-runner-3-dind
|
|
domainname: git.gbrown.org
|
|
networks: ['nginx-bridge']
|
|
privileged: true
|
|
environment:
|
|
<<: *dind-env
|
|
labels:
|
|
com.centurylinklabs.watchtower.enable: "true"
|
|
volumes:
|
|
- ./volumes/runner-3/certs:/certs
|
|
- ./volumes/runner-3/dind:/var/lib/docker
|
|
- /etc/localtime:/etc/localtime:ro
|
|
tty: true
|
|
stdin_open: true
|
|
restart: unless-stopped
|