Compare commits

...
1 Commits
Author SHA1 Message Date
DragonSlayer_14andClaude Sonnet 5 e055999f0c Feat: Runner-Capacity über RUNNER_CAPACITY in .env konfigurierbar
Das offizielle gitea/runner-Image kennt keine Umgebungsvariable für
runner.capacity, dieser Wert lässt sich nur über die config.yaml setzen.
entrypoint.sh kopiert config/runner.yaml beim Containerstart daher nach
/data/config.runtime.yaml und überschreibt dort per `gitea-runner config
set` die capacity, falls RUNNER_CAPACITY gesetzt ist, bevor das
eigentliche run.sh des Images gestartet wird.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-21 18:50:13 +02:00
5 changed files with 37 additions and 1 deletions
+3
View File
@@ -2,3 +2,6 @@ INSTANCE_URL=https://gitea.creative-dragonslayer.de
REGISTRATION_TOKEN=ABC REGISTRATION_TOKEN=ABC
RUNNER_NAME=gitea_main RUNNER_NAME=gitea_main
RUNNER_LABELS= RUNNER_LABELS=
# Optional: überschreibt runner.capacity aus config/runner.yaml zur Laufzeit.
# Leer lassen, um den Wert aus config/runner.yaml zu verwenden.
RUNNER_CAPACITY=
+11
View File
@@ -6,6 +6,7 @@ Enthält eine einfache docker-compose, um einen gitea_runner zu starten.
- `config/runner.yaml` — Konfiguration des Runners - `config/runner.yaml` — Konfiguration des Runners
- `config/cache.yaml` — Konfiguration des Cache-Servers - `config/cache.yaml` — Konfiguration des Cache-Servers
- `entrypoint.sh` — Wrapper-Entrypoint des Runner-Containers (siehe „Capacity über .env“ unten)
- `data/runner` — persistenter Zustand des Runners (u. a. `.runner`-Registrierungsdatei) - `data/runner` — persistenter Zustand des Runners (u. a. `.runner`-Registrierungsdatei)
- `data/cache` — persistente Cache-Daten - `data/cache` — persistente Cache-Daten
- `cache-secret` — gemeinsames Secret für Runner ↔ Cache-Server (siehe unten, **nicht** in Git) - `cache-secret` — gemeinsames Secret für Runner ↔ Cache-Server (siehe unten, **nicht** in Git)
@@ -50,6 +51,16 @@ Falls vorher schon ein eigenständiger Cache-Ordner existierte (z. B. unter
`data/runner/cache` oder `cache-data/` aus einer Zwischenversion), diesen entsprechend `data/runner/cache` oder `cache-data/` aus einer Zwischenversion), diesen entsprechend
nach `data/cache` verschieben. nach `data/cache` verschieben.
## Capacity über .env
Das offizielle `gitea/runner`-Image kennt keine Umgebungsvariable für `runner.capacity`
dieser Wert lässt sich nur über die `config.yaml` setzen. `entrypoint.sh` schließt diese
Lücke: beim Containerstart wird `config/runner.yaml` nach `/data/config.runtime.yaml`
kopiert und dort, falls `RUNNER_CAPACITY` in der `.env` gesetzt ist, per
`gitea-runner config set` überschrieben, bevor das eigentliche `run.sh` des Images
gestartet wird. Ist `RUNNER_CAPACITY` leer, bleibt der Wert aus `config/runner.yaml`
unverändert.
## Cache-Service ## Cache-Service
Der Cache läuft als eigener Service (`cache` in `docker-compose.yaml`), getrennt vom Der Cache läuft als eigener Service (`cache` in `docker-compose.yaml`), getrennt vom
+1
View File
@@ -1,6 +1,7 @@
runner: runner:
# Bis zu 5 Jobs gleichzeitig. container.network bleibt leer, damit jeder Job weiterhin # Bis zu 5 Jobs gleichzeitig. container.network bleibt leer, damit jeder Job weiterhin
# sein eigenes isoliertes Docker-Netzwerk bekommt (kein gegenseitiger Zugriff der Jobs). # sein eigenes isoliertes Docker-Netzwerk bekommt (kein gegenseitiger Zugriff der Jobs).
# Standardwert, falls RUNNER_CAPACITY in der .env nicht gesetzt ist (siehe entrypoint.sh).
capacity: 5 capacity: 5
cache: cache:
+4 -1
View File
@@ -6,14 +6,17 @@ services:
depends_on: depends_on:
cache: cache:
condition: service_healthy condition: service_healthy
entrypoint: ["/sbin/tini", "--", "bash", "/entrypoint.sh"]
environment: environment:
CONFIG_FILE: /config.yaml CONFIG_FILE: /config.yaml
RUNNER_CAPACITY: "${RUNNER_CAPACITY:-}"
GITEA_INSTANCE_URL: "${INSTANCE_URL}" GITEA_INSTANCE_URL: "${INSTANCE_URL}"
GITEA_RUNNER_REGISTRATION_TOKEN: "${REGISTRATION_TOKEN}" GITEA_RUNNER_REGISTRATION_TOKEN: "${REGISTRATION_TOKEN}"
GITEA_RUNNER_NAME: "${RUNNER_NAME}" GITEA_RUNNER_NAME: "${RUNNER_NAME}"
GITEA_RUNNER_LABELS: "${RUNNER_LABELS}" GITEA_RUNNER_LABELS: "${RUNNER_LABELS}"
volumes: volumes:
- ./config/runner.yaml:/config.yaml - ./entrypoint.sh:/entrypoint.sh:ro
- ./config/runner.yaml:/config.yaml:ro
- ./data/runner:/data - ./data/runner:/data
- ./cache-secret:/run/cache-secret:ro - ./cache-secret:/run/cache-secret:ro
- /var/run/docker.sock:/var/run/docker.sock - /var/run/docker.sock:/var/run/docker.sock
Executable
+18
View File
@@ -0,0 +1,18 @@
#!/usr/bin/env bash
# Kopiert die (read-only gemountete) config/runner.yaml in einen beschreibbaren
# Pfad in /data und wendet dort optional RUNNER_CAPACITY aus der .env an, bevor
# das eigentliche Runner-Entrypoint-Skript des Images gestartet wird.
set -euo pipefail
SOURCE_CONFIG="${CONFIG_FILE:-/config.yaml}"
RUNTIME_CONFIG="/data/config.runtime.yaml"
mkdir -p /data
cp "$SOURCE_CONFIG" "$RUNTIME_CONFIG"
if [[ -n "${RUNNER_CAPACITY:-}" ]]; then
gitea-runner config set -c "$RUNTIME_CONFIG" runner.capacity "$RUNNER_CAPACITY"
fi
export CONFIG_FILE="$RUNTIME_CONFIG"
exec /usr/local/bin/run.sh