Forgejo Runner a Codebergen: saját CI/CD a saját kezedben
Miért futtass saját CI/CD futtatót?
A Codeberg remek alternatíva a GitHub mellé. Forgejo alapokra épül, és egy non-profit szervezet tartja fenn. Emiatt nagyon fontos nekik, hogy a rendszerük ne terhelődjön feleslegesen. A közös futtatók ezért korlátozottak, és néha hosszabb sorban kell várni a futásra.
Erre megoldás a saját Forgejo runner futtatása. A jó hír az, hogy a runner kifelé kezdeményez kapcsolatot, így VPS-en, otthoni szerveren vagy akár laptopon is gond nélkül működik. Portnyitás nem szükséges.
Hogyan működik ez a rendszer?
A Forgejo runner lényegében egy háttérfolyamat, ami a Codebergről érkező feladatokat futtatja. Biztonsági okokból Docker-in-Docker (DinD) módban használjuk, így az egyes feladatok saját konténerben futnak, és nem érintik a gazdagép Docker démonát.
A Docker Compose beállítása
A rendszer két konténerből áll:
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'
Az első konténer egy elkülönített Docker környezetet biztosít,第二个 konténer pedig a Forgejo runner maga,负责 továbbítja a feladatokat.
Előkészületek
Először létre kell hozni a könyvtárstruktúrát megfelelő jogosultságokkal. Ajánlott hely a /opt/forgejo-runner. A következő lépések után a rendszer megfelelően működik:
cd /opt/forgejo-runner
mkdir -p data/.cache
chown -R 1001:1001 data
chmod 775 data/.cache
chmod g+s data/.cache
A konfigurációs fájlt a következő paranccsal hozhatjuk létre:
sudo sh -c 'docker run --rm data.forgejo.org/forgejo/runner:12 forgejo-runner generate-config > data/runner-config.yml'
Regisztráció a Codebergen
A Codeberg fiókod beállításaiban keresd az Actions → Runners menüt. Ott új futtatót tudsz létrehozni, és a rendszer azonnal megadja a szükséges UUID-t és tokent. Ezeket írd le, mert később nem látod őket újra.
A Codeberg egy kész YAML részletet is mutat, amit közvetlenül használhatsz a konfigurációban.
Címkék és kapacitás beállítása
A runner-config.yml fájlban két fontos dolgot kell beállítani.
1. Szerverkapcsolat: