feat: CI/CD pipeline setup complete - Ansible playbooks updated, secrets configured, workflow ready
This commit is contained in:
430
deployment/DEPLOYMENT-STATUS.md
Normal file
430
deployment/DEPLOYMENT-STATUS.md
Normal file
@@ -0,0 +1,430 @@
|
||||
# Deployment Status - Gitea Actions Runner Setup
|
||||
|
||||
**Status**: 🚧 BLOCKED - Phase 1 Step 1.1
|
||||
**Last Updated**: 2025-10-30
|
||||
**Target Server**: 94.16.110.151 (Netcup)
|
||||
|
||||
---
|
||||
|
||||
## Aktueller Status
|
||||
|
||||
### ✅ Abgeschlossen
|
||||
|
||||
**Phase 1 - Teilschritte Erledigt**:
|
||||
1. ✅ Runner-Verzeichnisstruktur verifiziert: `/home/michael/dev/michaelschiemer/deployment/gitea-runner/`
|
||||
2. ✅ `.env.example` Template analysiert (23 Zeilen)
|
||||
3. ✅ `docker-compose.yml` Architektur verstanden (47 Zeilen, Docker-in-Docker)
|
||||
4. ✅ `.env` Datei erstellt via: `cp deployment/gitea-runner/.env.example deployment/gitea-runner/.env`
|
||||
|
||||
### ⚠️ BLOCKER - Kritischer Fehler
|
||||
|
||||
**Problem**: Gitea Admin Panel nicht erreichbar
|
||||
|
||||
**URL**: `https://git.michaelschiemer.de/admin/actions/runners`
|
||||
**Fehler**: `404 page not found`
|
||||
|
||||
**Impact**:
|
||||
- ❌ Kann Registration Token nicht abrufen (Phase 1, Step 1.1)
|
||||
- ❌ Kann `.env` nicht komplettieren (Step 1.2)
|
||||
- ❌ Kann Runner nicht registrieren (Step 1.3)
|
||||
- ❌ Alle nachfolgenden Phasen (2-8) blockiert
|
||||
|
||||
---
|
||||
|
||||
## Dateistatus
|
||||
|
||||
### `/home/michael/dev/michaelschiemer/deployment/gitea-runner/.env`
|
||||
|
||||
**Status**: ✅ Erstellt (diese Session)
|
||||
**Quelle**: Kopie von `.env.example`
|
||||
**Problem**: `GITEA_RUNNER_REGISTRATION_TOKEN` ist leer
|
||||
|
||||
**Aktueller Inhalt**:
|
||||
```bash
|
||||
# Gitea Actions Runner Configuration
|
||||
|
||||
# Gitea Instance URL (must be accessible from runner)
|
||||
GITEA_INSTANCE_URL=https://git.michaelschiemer.de
|
||||
|
||||
# Runner Registration Token (get from Gitea: Admin > Actions > Runners)
|
||||
# To generate: Gitea UI > Site Administration > Actions > Runners > Create New Runner
|
||||
GITEA_RUNNER_REGISTRATION_TOKEN= # ← LEER - BLOCKIERT durch 404
|
||||
|
||||
# Runner Name (appears in Gitea UI)
|
||||
GITEA_RUNNER_NAME=dev-runner-01
|
||||
|
||||
# Runner Labels (comma-separated)
|
||||
# Format: label:image
|
||||
GITEA_RUNNER_LABELS=ubuntu-latest:docker://node:16-bullseye,ubuntu-22.04:docker://node:16-bullseye,debian-latest:docker://debian:bullseye
|
||||
|
||||
# Optional: Custom Docker registry for job images
|
||||
# DOCKER_REGISTRY_MIRROR=https://registry.michaelschiemer.de
|
||||
|
||||
# Optional: Runner capacity (max concurrent jobs)
|
||||
# GITEA_RUNNER_CAPACITY=1
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Fehleranalyse: 404 auf Gitea Admin Panel
|
||||
|
||||
### Wahrscheinliche Ursachen (nach Priorität)
|
||||
|
||||
#### 1. Gitea noch nicht deployed ⚠️ **HÖCHSTE WAHRSCHEINLICHKEIT**
|
||||
|
||||
**Problem**: Phasen-Reihenfolge-Konflikt in SETUP-GUIDE.md
|
||||
|
||||
- Phase 1 erfordert Gitea erreichbar
|
||||
- Phase 3 deployed Gitea auf Production Server
|
||||
- Klassisches Henne-Ei-Problem
|
||||
|
||||
**Beweis**: SETUP-GUIDE.md Phase 3, Step 3.1 zeigt:
|
||||
```markdown
|
||||
# 4. Gitea (Git Server + MySQL + Redis)
|
||||
cd ../gitea
|
||||
docker compose up -d
|
||||
docker compose logs -f
|
||||
# Wait for "Listen: http://0.0.0.0:3000"
|
||||
```
|
||||
|
||||
**Lösung**: Phase 3 VOR Phase 1 ausführen
|
||||
|
||||
#### 2. Gitea Actions Feature deaktiviert
|
||||
|
||||
**Problem**: Actions in `app.ini` nicht enabled
|
||||
|
||||
**Check benötigt**:
|
||||
```bash
|
||||
ssh deploy@94.16.110.151
|
||||
cat ~/deployment/stacks/gitea/data/gitea/conf/app.ini | grep -A 5 "[actions]"
|
||||
```
|
||||
|
||||
**Erwartetes Ergebnis**:
|
||||
```ini
|
||||
[actions]
|
||||
ENABLED = true
|
||||
```
|
||||
|
||||
#### 3. Falsche URL (andere Gitea Version)
|
||||
|
||||
**Mögliche alternative URLs**:
|
||||
- `https://git.michaelschiemer.de/admin`
|
||||
- `https://git.michaelschiemer.de/user/settings/actions`
|
||||
- `https://git.michaelschiemer.de/admin/runners`
|
||||
|
||||
#### 4. Authentication/Authorization Problem
|
||||
|
||||
**Mögliche Ursachen**:
|
||||
- User nicht eingeloggt in Gitea
|
||||
- User hat keine Admin-Rechte
|
||||
- Session abgelaufen
|
||||
|
||||
#### 5. Gitea Service nicht gestartet
|
||||
|
||||
**Check benötigt**:
|
||||
```bash
|
||||
ssh deploy@94.16.110.151
|
||||
cd ~/deployment/stacks/gitea
|
||||
docker compose ps
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Untersuchungsplan
|
||||
|
||||
### Step 1: Base Gitea Accessibility prüfen
|
||||
|
||||
```bash
|
||||
# Test ob Gitea überhaupt läuft
|
||||
curl -I https://git.michaelschiemer.de
|
||||
```
|
||||
|
||||
**Erwartetes Ergebnis**:
|
||||
- HTTP 200 → Gitea läuft
|
||||
- Connection Error → Gitea nicht deployed
|
||||
|
||||
### Step 2: Browser Verification
|
||||
|
||||
1. `https://git.michaelschiemer.de` direkt öffnen
|
||||
2. Homepage-Load verifizieren
|
||||
3. Login-Status prüfen
|
||||
4. Admin-Rechte verifizieren
|
||||
|
||||
### Step 3: Alternative Admin Panel URLs testen
|
||||
|
||||
```bash
|
||||
# Try different paths
|
||||
https://git.michaelschiemer.de/admin
|
||||
https://git.michaelschiemer.de/user/settings/actions
|
||||
https://git.michaelschiemer.de/admin/runners
|
||||
```
|
||||
|
||||
### Step 4: Gitea Configuration prüfen (SSH benötigt)
|
||||
|
||||
```bash
|
||||
ssh deploy@94.16.110.151
|
||||
cat ~/deployment/stacks/gitea/data/gitea/conf/app.ini | grep -A 5 "\[actions\]"
|
||||
```
|
||||
|
||||
### Step 5: Gitea Stack Status prüfen (SSH benötigt)
|
||||
|
||||
```bash
|
||||
ssh deploy@94.16.110.151
|
||||
cd ~/deployment/stacks/gitea
|
||||
docker compose ps
|
||||
docker compose logs gitea --tail 50
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Alternative Lösungsansätze
|
||||
|
||||
### Option A: Phasen-Reihenfolge ändern ⭐ **EMPFOHLEN**
|
||||
|
||||
**Ansatz**: Phase 3 zuerst ausführen, dann Phase 1
|
||||
|
||||
**Begründung**:
|
||||
- Gitea muss deployed sein bevor Runner registriert werden kann
|
||||
- Phase 3 deployed komplette Infrastructure (Traefik, PostgreSQL, Registry, **Gitea**, Monitoring)
|
||||
- Danach kann Phase 1 normal durchgeführt werden
|
||||
|
||||
**Ablauf**:
|
||||
1. Phase 3 komplett ausführen (Infrastructure deployment)
|
||||
2. Gitea Accessibility verifizieren
|
||||
3. Gitea Actions in UI enablen
|
||||
4. Zurück zu Phase 1 für Runner Setup
|
||||
5. Weiter mit Phasen 2, 4-8
|
||||
|
||||
### Option B: CLI-basierte Runner Registration
|
||||
|
||||
**Ansatz**: Runner über Gitea CLI registrieren statt Web UI
|
||||
|
||||
```bash
|
||||
# Auf Production Server
|
||||
ssh deploy@94.16.110.151
|
||||
docker exec gitea gitea admin actions generate-runner-token
|
||||
|
||||
# Token zurück zu Dev Machine kopieren
|
||||
# In .env eintragen
|
||||
```
|
||||
|
||||
### Option C: Manual Token Generation
|
||||
|
||||
**Ansatz**: Token direkt in Gitea Database generieren (nur als letzter Ausweg)
|
||||
|
||||
**WARNUNG**: Nur verwenden wenn alle anderen Optionen fehlschlagen
|
||||
|
||||
---
|
||||
|
||||
## Docker-in-Docker Architektur (Referenz)
|
||||
|
||||
### Services
|
||||
|
||||
**gitea-runner**:
|
||||
- Image: `gitea/act_runner:latest`
|
||||
- Purpose: Hauptrunner-Service
|
||||
- Volumes:
|
||||
- `./data:/data` (Runner-Daten)
|
||||
- `/var/run/docker.sock:/var/run/docker.sock` (Host Docker Socket)
|
||||
- `./config.yaml:/config.yaml:ro` (Konfiguration)
|
||||
- Environment: Variablen aus `.env` File
|
||||
- Network: `gitea-runner` Bridge Network
|
||||
|
||||
**docker-dind**:
|
||||
- Image: `docker:dind`
|
||||
- Purpose: Isolierte Docker-Daemon für Job-Execution
|
||||
- Privileged: `true` (benötigt für nested containerization)
|
||||
- TLS: `DOCKER_TLS_CERTDIR=/certs`
|
||||
- Volumes:
|
||||
- `docker-certs:/certs` (TLS Zertifikate)
|
||||
- `docker-data:/var/lib/docker` (Docker Layer Storage)
|
||||
- Command: `dockerd --host=unix:///var/run/docker.sock --host=tcp://0.0.0.0:2376 --tlsverify`
|
||||
|
||||
### Networks
|
||||
|
||||
**gitea-runner** Bridge Network:
|
||||
- Isoliert Runner-Infrastructure vom Host
|
||||
- Secure TLS Communication zwischen Services
|
||||
|
||||
### Volumes
|
||||
|
||||
- `docker-certs`: Shared TLS Certificates für runner ↔ dind
|
||||
- `docker-data`: Persistent Docker Layer Storage
|
||||
|
||||
---
|
||||
|
||||
## 8-Phasen Deployment Prozess (Übersicht)
|
||||
|
||||
### Phase 1: Gitea Runner Setup (Development Machine) - **⚠️ BLOCKIERT**
|
||||
**Status**: Kann nicht starten wegen 404 auf Admin Panel
|
||||
**Benötigt**: Gitea erreichbar und Actions enabled
|
||||
|
||||
### Phase 2: Ansible Vault Secrets Setup - **⏳ WARTET**
|
||||
**Status**: Kann nicht starten bis Phase 1 komplett
|
||||
**Tasks**:
|
||||
- Vault Password erstellen (`.vault_pass`)
|
||||
- `production.vault.yml` mit Secrets erstellen
|
||||
- Encryption Keys generieren
|
||||
- Vault File verschlüsseln
|
||||
|
||||
### Phase 3: Production Server Initial Setup - **⏳ KÖNNTE ZUERST AUSGEFÜHRT WERDEN**
|
||||
**Status**: Sollte möglicherweise VOR Phase 1 ausgeführt werden
|
||||
**Tasks**:
|
||||
- SSH zu Production Server
|
||||
- Deploy Infrastructure Stacks:
|
||||
1. Traefik (Reverse Proxy & SSL)
|
||||
2. PostgreSQL (Database)
|
||||
3. Docker Registry (Private Registry)
|
||||
4. **Gitea (Git Server + MySQL + Redis)** ← Benötigt für Phase 1!
|
||||
5. Monitoring (Portainer + Grafana + Prometheus)
|
||||
|
||||
### Phase 4: Application Secrets Deployment - **⏳ WARTET**
|
||||
**Status**: Wartet auf Phase 1-3
|
||||
**Tasks**: Secrets via Ansible zu Production deployen
|
||||
|
||||
### Phase 5: Gitea CI/CD Secrets Configuration - **⏳ WARTET**
|
||||
**Status**: Wartet auf Phase 1-4
|
||||
**Tasks**: Repository Secrets in Gitea konfigurieren
|
||||
|
||||
### Phase 6: First Deployment Test - **⏳ WARTET**
|
||||
**Status**: Wartet auf Phase 1-5
|
||||
**Tasks**: CI/CD Pipeline triggern und testen
|
||||
|
||||
### Phase 7: Monitoring & Health Checks - **⏳ WARTET**
|
||||
**Status**: Wartet auf Phase 1-6
|
||||
**Tasks**: Monitoring Tools konfigurieren und Alerting einrichten
|
||||
|
||||
### Phase 8: Backup & Rollback Testing - **⏳ WARTET**
|
||||
**Status**: Wartet auf Phase 1-7
|
||||
**Tasks**: Backup-Mechanismus und Rollback testen
|
||||
|
||||
---
|
||||
|
||||
## Empfohlener Nächster Schritt
|
||||
|
||||
### ⭐ Option A: Phase 3 zuerst ausführen (Empfohlen)
|
||||
|
||||
**Begründung**:
|
||||
- Behebt die Grundursache (Gitea nicht deployed)
|
||||
- Folgt logischer Abhängigkeitskette
|
||||
- Erlaubt normalen Fortschritt durch alle Phasen
|
||||
|
||||
**Ablauf**:
|
||||
```bash
|
||||
# 1. SSH zu Production Server
|
||||
ssh deploy@94.16.110.151
|
||||
|
||||
# 2. Navigate zu stacks
|
||||
cd ~/deployment/stacks
|
||||
|
||||
# 3. Deploy Traefik
|
||||
cd traefik
|
||||
docker compose up -d
|
||||
docker compose logs -f # Warten auf "Configuration loaded"
|
||||
|
||||
# 4. Deploy PostgreSQL
|
||||
cd ../postgresql
|
||||
docker compose up -d
|
||||
docker compose logs -f # Warten auf "database system is ready"
|
||||
|
||||
# 5. Deploy Registry
|
||||
cd ../registry
|
||||
docker compose up -d
|
||||
docker compose logs -f # Warten auf "listening on [::]:5000"
|
||||
|
||||
# 6. Deploy Gitea ← KRITISCH für Phase 1
|
||||
cd ../gitea
|
||||
docker compose up -d
|
||||
docker compose logs -f # Warten auf "Listen: http://0.0.0.0:3000"
|
||||
|
||||
# 7. Deploy Monitoring
|
||||
cd ../monitoring
|
||||
docker compose up -d
|
||||
docker compose logs -f
|
||||
|
||||
# 8. Verify all stacks
|
||||
docker ps
|
||||
|
||||
# 9. Test Gitea Accessibility
|
||||
curl -I https://git.michaelschiemer.de
|
||||
```
|
||||
|
||||
**Nach Erfolg**:
|
||||
1. Gitea Web UI öffnen: `https://git.michaelschiemer.de`
|
||||
2. Initial Setup Wizard durchlaufen
|
||||
3. Admin Account erstellen
|
||||
4. Actions in Settings enablen
|
||||
5. **Zurück zu Phase 1**: Jetzt kann Admin Panel erreicht werden
|
||||
6. Registration Token holen
|
||||
7. `.env` komplettieren
|
||||
8. Runner registrieren und starten
|
||||
|
||||
---
|
||||
|
||||
## Technische Details
|
||||
|
||||
### Gitea Actions Architecture
|
||||
|
||||
**Components**:
|
||||
- **act_runner**: Gitea's self-hosted runner (basiert auf nektos/act)
|
||||
- **Docker-in-Docker**: Isolierte Job-Execution Environment
|
||||
- **TLS Communication**: Secure runner ↔ dind via certificates
|
||||
|
||||
**Runner Registration**:
|
||||
1. Generate Token in Gitea Admin Panel
|
||||
2. Add Token zu `.env`: `GITEA_RUNNER_REGISTRATION_TOKEN=<token>`
|
||||
3. Run `./register.sh` (registriert runner mit Gitea instance)
|
||||
4. Start services: `docker compose up -d`
|
||||
5. Verify in Gitea UI: Runner shows as "Idle" or "Active"
|
||||
|
||||
**Runner Labels**:
|
||||
Define welche Execution Environments unterstützt werden:
|
||||
```bash
|
||||
GITEA_RUNNER_LABELS=ubuntu-latest:docker://node:16-bullseye,ubuntu-22.04:docker://node:16-bullseye,debian-latest:docker://debian:bullseye
|
||||
```
|
||||
|
||||
Format: `label:docker://image`
|
||||
|
||||
---
|
||||
|
||||
## Dateireferenzen
|
||||
|
||||
### Wichtige Dateien
|
||||
|
||||
| Datei | Status | Beschreibung |
|
||||
|-------|--------|--------------|
|
||||
| `SETUP-GUIDE.md` | ✅ Vorhanden | Komplette 8-Phasen Deployment Anleitung (708 Zeilen) |
|
||||
| `deployment/gitea-runner/.env.example` | ✅ Vorhanden | Template für Runner Configuration (23 Zeilen) |
|
||||
| `deployment/gitea-runner/.env` | ✅ Erstellt | Active Configuration - **Token fehlt** |
|
||||
| `deployment/gitea-runner/docker-compose.yml` | ✅ Vorhanden | Two-Service Architecture Definition (47 Zeilen) |
|
||||
|
||||
### Code Snippets Location
|
||||
|
||||
**Runner Configuration** (`.env`):
|
||||
- Zeilen 1-23: Komplette Environment Variables Definition
|
||||
- Zeile 8: `GITEA_RUNNER_REGISTRATION_TOKEN=` ← **KRITISCH: LEER**
|
||||
|
||||
**Docker Compose** (`docker-compose.yml`):
|
||||
- Zeilen 4-20: `gitea-runner` Service Definition
|
||||
- Zeilen 23-34: `docker-dind` Service Definition
|
||||
- Zeilen 37-40: Network Configuration
|
||||
- Zeilen 43-47: Volume Definitions
|
||||
|
||||
**Setup Guide** (SETUP-GUIDE.md):
|
||||
- Zeilen 36-108: Phase 1 Komplette Anleitung
|
||||
- Zeilen 236-329: Phase 3 Infrastructure Deployment (inkl. Gitea)
|
||||
|
||||
---
|
||||
|
||||
## Support Kontakte
|
||||
|
||||
**Bei Problemen**:
|
||||
- Framework Issues: Siehe `docs/claude/troubleshooting.md`
|
||||
- Gitea Documentation: https://docs.gitea.io/
|
||||
- act_runner Documentation: https://docs.gitea.io/en-us/usage/actions/act-runner/
|
||||
|
||||
---
|
||||
|
||||
**Erstellt**: 2025-10-30
|
||||
**Letzte Änderung**: 2025-10-30
|
||||
**Status**: BLOCKED - Awaiting Gitea Deployment (Phase 3)
|
||||
Reference in New Issue
Block a user