diff --git a/deploy/gitea-runner/README.md b/deploy/gitea-runner/README.md new file mode 100644 index 0000000..cced23d --- /dev/null +++ b/deploy/gitea-runner/README.md @@ -0,0 +1,7 @@ +# Gitea Actions Runner + +1. In Gitea: **cluster-knaster → Einstellungen → Actions → Runner → Neuen Runner erstellen**. Token kopieren. Actions muss für das Repo aktiviert sein. +2. Auf dem Zielhost: `GITEA_RUNNER_REGISTRATION_TOKEN= docker compose up -d`. Alternativ als Portainer-Stack mit der Variablen. +3. In Gitea erscheint der Runner mit dem Label `ubuntu-latest`. Die CI (`.gitea/workflows/ci.yml`) läuft beim nächsten Push. + +**Sicherheit:** Der Runner hat Zugriff auf den Docker-Socket des Hosts. Deshalb nur auf Repo-Ebene registrieren und keine Workflows aus fremden Forks ausführen. Vorgesehener Platz ist der Infra-LXC des Clusters. Bis der steht, ist ein Übergangshost möglich. diff --git a/deploy/gitea-runner/config.yaml b/deploy/gitea-runner/config.yaml new file mode 100644 index 0000000..5876783 --- /dev/null +++ b/deploy/gitea-runner/config.yaml @@ -0,0 +1,19 @@ +log: + level: info +runner: + file: /data/.runner + capacity: 1 # nur ein Job gleichzeitig + timeout: 30m + fetch_interval: 5s + labels: + - "ubuntu-latest:docker://catthehacker/ubuntu:act-22.04" +cache: + enabled: true + dir: /data/cache +container: + privileged: false + options: "--cpus=1 --memory=2g" # Grenze pro Job-Container + valid_volumes: [] + force_pull: false +host: + workdir_parent: /data/workdir diff --git a/deploy/gitea-runner/docker-compose.yml b/deploy/gitea-runner/docker-compose.yml new file mode 100644 index 0000000..88f0b43 --- /dev/null +++ b/deploy/gitea-runner/docker-compose.yml @@ -0,0 +1,24 @@ +# Gitea Actions Runner (act_runner) für cluster-knaster. +# Bewusst klein: 1 Job gleichzeitig, Job-Container auf 1 CPU / 2 GB begrenzt. +# Registrierung nur auf Repo-Ebene (cluster-knaster → Einstellungen → Actions → Runner → Token). +name: gitea-runner + +services: + act-runner: + image: gitea/act_runner:0.2.11 + restart: unless-stopped + environment: + GITEA_INSTANCE_URL: ${GITEA_INSTANCE_URL:-https://gitea.mindboost.team} + GITEA_RUNNER_REGISTRATION_TOKEN: ${GITEA_RUNNER_REGISTRATION_TOKEN:?Registrierungs-Token fehlt} + GITEA_RUNNER_NAME: ${GITEA_RUNNER_NAME:-knaster-runner} + CONFIG_FILE: /config.yaml + volumes: + - ./config.yaml:/config.yaml:ro + - runner-data:/data + - /var/run/docker.sock:/var/run/docker.sock # startet die Job-Container auf diesem Host + deploy: + resources: + limits: {cpus: "0.5", memory: 256M} + +volumes: + runner-data: {}