Egen Forgejo Runner på Codeberg – så sätter du upp självhostad CI/CD
Varför köra en egen CI/CD-runner?
Codeberg har blivit ett populärt alternativ till GitHub. Plattformen bygger på Forgejo och drivs av en ideell organisation, vilket innebär att den prioriterar integritet och gemenskap. Men som många icke-vinstdrivande projekt har den begränsade resurser för sina delade runners.
Lösningen heter självhostad Forgejo-runner. En stor fördel är att dessa runners bara behöver utgående anslutningar, vilket gör det enkelt att köra dem på en VPS, en hemmserver eller till och med en bärbar dator. Inga portöppningar krävs.
Hur arkitekturen ser ut
En Forgejo-runner fungerar som en arbetare som hämtar jobb från Codeberg och kör dem. För att undvika säkerhetsrisker kör vi den isolerat med hjälp av Docker-in-Docker. Det betyder att runnern får ett eget Docker-miljö utan att röra värddatorns Docker-daemon.
Docker Compose-konfigurationen
Vi använder en enkel tvåcontainer-setup:
version: '3.8'
services:
docker-in-docker:
image: docker:dind
container_name: 'docker_dind'
privileged: 'true'
command: ['dockerd', '-H', 'tcp://0.0.0.0:2375', '--tls=false']
restart: 'unless-stopped'
runner:
image: 'data.forgejo.org/forgejo/runner:12'
links:
- docker-in-docker
depends_on:
docker-in-docker:
condition: service_started
container_name: 'runner'
environment:
DOCKER_HOST: tcp://docker-in-docker:2375
user: 1001:1001
volumes:
- ./data:/data
restart: 'unless-stopped'
command: 'forgejo-runner daemon --config runner-config.yml'
Den första containern ger en isolerad Docker-miljö,而 den andra är själva Forgejo-runnern som använder den.
Förbered ditt system
Förbereder du setupen av din runner på /opt/forgejo-runner, så kan du markera att du tap.