# Workflow Troubleshooting Guide ## Problem: Workflows brechen zwischendurch ab ### Mögliche Ursachen #### 1. Actions werden nicht geladen **Symptom:** Workflow startet, aber Actions wie `actions/checkout@v4` schlagen fehl **Lösung:** Prüfe Gitea Konfiguration: ```bash docker exec gitea cat /data/gitea/conf/app.ini | grep -A 3 '[actions]' ``` Sollte enthalten: ```ini [actions] ENABLED = true # Do NOT set DEFAULT_ACTIONS_URL - it will automatically use Gitea's own instance # Setting DEFAULT_ACTIONS_URL to custom URLs is no longer supported by Gitea ``` #### 2. Timeouts bei langen Steps **Symptom:** Workflow läuft eine Zeit, dann Timeout **Lösung:** Timeout in Runner Config erhöhen: ```yaml # deployment/gitea-runner/config.yaml runner: timeout: 6h # Erhöhe von 3h auf 6h ``` Dann Runner neu starten: ```bash cd deployment/gitea-runner docker compose restart gitea-runner ``` #### 3. Docker Buildx Probleme **Symptom:** Build Step schlägt fehl oder bricht ab **Lösung:** Prüfe, ob Buildx richtig läuft. Alternativ: Direktes Docker Build verwenden. #### 4. Gitea-Variablen (früher GitHub-kompatibel) **Symptom:** `${{ github.sha }}` ist leer oder falsch **Lösung:** Gitea Actions unterstützt `github.*` Variablen für Kompatibilität, aber `gitea.*` ist die native Variante. **Test:** Prüfe in Workflow-Logs, welche Variablen verfügbar sind: ```yaml - name: Debug variables run: | echo "GITHUB_SHA: ${{ github.sha }}" echo "GITEA_SHA: ${{ gitea.sha }}" echo "RUNNER_OS: ${{ runner.os }}" ``` #### 5. Secrets fehlen oder sind falsch **Symptom:** Registry Login oder SSH schlägt fehl **Lösung:** Prüfe Secrets in Gitea: - Repository → Settings → Secrets - Alle benötigten Secrets sollten vorhanden sein: - `REGISTRY_USER` - `REGISTRY_PASSWORD` - `SSH_PRIVATE_KEY` - `ANSIBLE_VAULT_PASSWORD` (falls verwendet) ### Debugging-Schritte #### 1. Workflow-Logs analysieren In Gitea UI: 1. Gehe zu Actions → Fehlgeschlagener Workflow 2. Klicke auf fehlgeschlagene Step 3. Prüfe Logs für Fehlermeldungen 4. Suche nach: - `error` - `timeout` - `failed` - `exit code` #### 2. Runner-Logs prüfen ```bash cd deployment/gitea-runner docker compose logs gitea-runner --tail=100 | grep -E "(error|failed|timeout)" ``` #### 3. Runner Status prüfen In Gitea: https://git.michaelschiemer.de/admin/actions/runners Prüfe: - Status sollte "Idle" oder "Running" sein - Letzte Aktivität sollte kürzlich sein - Keine Fehler-Meldungen ### Häufige Fehler und Fixes #### Problem: "Action not found" **Fehler:** `Error: Action 'actions/checkout@v4' not found` **Fix:** 1. Prüfe `DEFAULT_ACTIONS_URL` in Gitea config 2. Stelle sicher, dass Internet-Zugriff vom Runner vorhanden ist 3. Gitea neu starten: `docker compose restart gitea` #### Problem: "Timeout" **Fehler:** `timeout: job exceeded maximum duration` **Fix:** 1. Erhöhe Timeout in `config.yaml` 2. Oder teile Workflow in kleinere Jobs auf #### Problem: "Docker build failed" **Fehler:** Docker Build schlägt fehl **Fix:** 1. Prüfe `docker-dind` Container läuft 2. Prüfe Registry-Zugriff 3. Prüfe Registry-Credentials #### Problem: "SSH connection failed" **Fehler:** Ansible Deployment kann nicht zum Server verbinden **Fix:** 1. Prüfe `SSH_PRIVATE_KEY` Secret ist korrekt 2. Prüfe SSH-Key hat richtige Berechtigungen 3. Prüfe Firewall erlaubt Verbindung ### Workflow optimieren #### Reduziere Workflow-Zeit 1. **Cache verwenden:** ```yaml - uses: actions/cache@v3 with: path: vendor key: composer-${{ hashFiles('composer.lock') }} ``` 2. **Parallel Jobs:** ```yaml jobs: test: # ... build: # ... # Beide können parallel laufen ``` 3. **Conditional Steps:** ```yaml - name: Skip on docs change if: contains(github.event.head_commit.message, '[skip ci]') run: exit 0 ``` ### Nächste Schritte 1. **Identifiziere genaue Abbruch-Stelle:** - In welchem Step bricht es ab? - Welche Fehlermeldung erscheint? 2. **Prüfe Logs:** - Workflow-Logs in Gitea UI - Runner-Logs: `docker compose logs gitea-runner` 3. **Teste einzelne Steps:** - Führe Steps manuell aus - Isoliere das Problem 4. **Workflow vereinfachen:** - Reduziere auf minimalen Test-Workflow - Füge Steps schrittweise hinzu