chore: remove test trigger file
This commit is contained in:
185
deployment/WORKFLOW-TROUBLESHOOTING.md
Normal file
185
deployment/WORKFLOW-TROUBLESHOOTING.md
Normal file
@@ -0,0 +1,185 @@
|
||||
# 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
|
||||
DEFAULT_ACTIONS_URL = https://github.com
|
||||
```
|
||||
|
||||
#### 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. GitHub-Variablen in Gitea
|
||||
|
||||
**Symptom:** `${{ github.sha }}` ist leer oder falsch
|
||||
|
||||
**Lösung:** Gitea Actions sollte `github.*` Variablen unterstützen, aber manchmal funktioniert `gitea.*` besser.
|
||||
|
||||
**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
|
||||
Reference in New Issue
Block a user