- Increase fetch_interval from 2s to 10s to reduce load on Gitea - Increase fetch_timeout from 5s to 30s for better error handling - Add documentation about runner overloading Gitea and how to fix it - Prevents 504 errors caused by runner bombarding Gitea with requests
107 lines
3.0 KiB
Markdown
107 lines
3.0 KiB
Markdown
# Gitea Runner Konfiguration korrigieren
|
|
|
|
## Problem
|
|
|
|
Der Gitea Runner verwendet gemischte URLs (GitHub + Gitea) und fällt bei 504-Fehlern auf GitHub zurück, was zu Timeouts führt.
|
|
|
|
## Lösung: Runner neu registrieren
|
|
|
|
### Schritt 1: Runner stoppen
|
|
|
|
```bash
|
|
cd deployment/gitea-runner
|
|
docker compose stop gitea-runner
|
|
```
|
|
|
|
### Schritt 2: Backup erstellen und .runner Datei entfernen
|
|
|
|
```bash
|
|
# Backup erstellen
|
|
cp data/.runner data/.runner.backup.$(date +%s)
|
|
|
|
# .runner Datei entfernen (wird bei neuer Registration neu erstellt)
|
|
rm -f data/.runner
|
|
```
|
|
|
|
### Schritt 3: Runner starten
|
|
|
|
```bash
|
|
docker compose up -d gitea-runner
|
|
```
|
|
|
|
### Schritt 4: Runner neu registrieren
|
|
|
|
```bash
|
|
# .env Datei laden
|
|
source .env
|
|
|
|
# Runner registrieren (nur mit korrekter Gitea-URL)
|
|
docker compose exec -T gitea-runner act_runner register \
|
|
--instance "${GITEA_INSTANCE_URL}" \
|
|
--token "${GITEA_RUNNER_REGISTRATION_TOKEN}" \
|
|
--name "${GITEA_RUNNER_NAME}" \
|
|
--labels "${GITEA_RUNNER_LABELS}"
|
|
```
|
|
|
|
**Wichtig**: Bei der Aufforderung "Runner is already registered, overwrite local config? [y/N]" mit `y` antworten.
|
|
|
|
### Schritt 5: Verifikation
|
|
|
|
1. **Prüfe .runner Datei:**
|
|
```bash
|
|
cat data/.runner | grep -E "(address|instance)"
|
|
```
|
|
Sollte nur `https://git.michaelschiemer.de` enthalten, keine GitHub-URLs.
|
|
|
|
2. **Prüfe Runner-Logs:**
|
|
```bash
|
|
docker compose logs gitea-runner --tail=50 | grep -E "(github|instance|declare)"
|
|
```
|
|
Sollte `declare successfully` zeigen und keine GitHub-URLs mehr enthalten.
|
|
|
|
3. **Prüfe in Gitea UI:**
|
|
- Gehe zu: https://git.michaelschiemer.de/admin/actions/runners
|
|
- Runner sollte als "Online" angezeigt werden
|
|
|
|
## Automatisierung
|
|
|
|
Falls der Runner automatisch neu registriert werden soll:
|
|
|
|
```bash
|
|
cd deployment/gitea-runner
|
|
./unregister.sh # Falls vorhanden
|
|
./register.sh # Neu registrieren
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
**Runner registriert sich nicht:**
|
|
- Prüfe, ob Gitea erreichbar ist: `curl https://git.michaelschiemer.de/api/healthz`
|
|
- Prüfe, ob der Registration Token noch gültig ist
|
|
- Prüfe Runner-Logs: `docker compose logs gitea-runner`
|
|
|
|
**Runner verwendet immer noch GitHub:**
|
|
- Stelle sicher, dass die `.runner` Datei nur die korrekte Gitea-URL enthält
|
|
- Prüfe, ob es mehrere Runner-Instanzen gibt: `docker ps | grep runner`
|
|
- Prüfe Workflow-Definitionen auf GitHub-URLs
|
|
|
|
**504 Gateway Timeout:**
|
|
- Prüfe Gitea-Container: `docker logs gitea`
|
|
- Prüfe Traefik-Logs: `docker logs traefik`
|
|
- Stelle sicher, dass Gitea nicht überlastet ist
|
|
|
|
**Runner überlastet Gitea (DDoS-ähnliches Verhalten):**
|
|
- Der Runner kann Gitea mit zu vielen Anfragen überlasten, besonders bei Fehlern
|
|
- **Lösung**: `fetch_interval` in `config.yaml` erhöhen (Standard: 2s → Empfohlen: 10s oder mehr)
|
|
- **Lösung**: `fetch_timeout` erhöhen (Standard: 5s → Empfohlen: 30s)
|
|
- **Sofortmaßnahme**: Runner deaktivieren/stoppen, bis Gitea wieder stabil ist:
|
|
```bash
|
|
cd deployment/gitea-runner
|
|
docker compose stop gitea-runner
|
|
```
|
|
- Nach Anpassung der Konfiguration Runner neu starten:
|
|
```bash
|
|
docker compose up -d gitea-runner
|
|
```
|
|
|