# Quick Start Guide - Deployment & CI/CD

## 🚀 Schnellstart: Code deployen

### Einfachste Methode

```bash
# 1. Code ändern
# ... Dateien bearbeiten ...

# 2. Committen
git add .
git commit -m "feat: Add new feature"

# 3. Pushen → Automatisches Deployment!
git push origin main
```

**Das war's!** Die Pipeline läuft automatisch (~8-15 Minuten).

---

## 📋 Status-Übersicht

### ✅ Vollständig konfiguriert

- ✅ **CI/CD Pipeline** - Automatisches Deployment bei Push zu `main`
- ✅ **Gitea Runner** - Läuft und ist registriert
- ✅ **Secrets** - Alle kritischen Secrets konfiguriert
- ✅ **Application Stack** - Integration in `setup-infrastructure.yml`
- ✅ **Ansible Playbooks** - Deployment & Rollback vorhanden

### ⚠️ Ausstehend

- [ ] **Pipeline testen** - End-to-End Test durchführen
- [ ] **Backup-Scripts** - Backup-Playbook erstellen
- [ ] **Dokumentation vervollständigen** - Finale Updates

---

## 🔍 Pipeline-Status prüfen

### Nach einem Push

**Gitea Actions UI:**
```
https://git.michaelschiemer.de/michael/michaelschiemer/actions
```

**Status-Anzeigen:**
- 🟢 Grüner Haken = Erfolgreich
- 🔴 Roter Haken = Fehlgeschlagen
- 🟡 Gelber Kreis = Läuft gerade

**Logs ansehen:**
1. Klicke auf den Workflow-Run
2. Klicke auf Job (z.B. "Deploy to Production Server")
3. Klicke auf Step (z.B. "Deploy via Ansible")
4. Logs ansehen

### Application-Status prüfen

```bash
# SSH zum Production-Server
ssh deploy@94.16.110.151

# Container-Status
cd ~/deployment/stacks/application
docker compose ps

# Logs ansehen
docker compose logs app

# Health-Check
curl https://michaelschiemer.de/health
```

---

## 📚 Vollständige Dokumentation

### Deployment-Dokumentation

- **`CODE_CHANGE_WORKFLOW.md`** - Wie Codeänderungen gepusht werden
- **`APPLICATION_STACK_DEPLOYMENT.md`** - Detaillierter Deployment-Ablauf
- **`CI_CD_STATUS.md`** - CI/CD Pipeline Status & Checkliste
- **`DEPLOYMENT-TODO.md`** - Aktuelle TODO-Liste

### Setup-Dokumentation

- **`docs/guides/setup-guide.md`** - Kompletter Setup-Guide
- **`ansible/README.md`** - Ansible Playbooks Dokumentation
- **`stacks/application/README.md`** - Application Stack Details

### Workflow-Dokumentation

- **`.gitea/workflows/production-deploy.yml`** - Haupt-Deployment-Pipeline
- **`.gitea/workflows/TEST_WORKFLOW.md`** - Workflow-Test-Anleitung

---

## 🎯 Nächste Schritte

### 1. Pipeline testen (Empfohlen)

**Option A: Test-Commit pushen**
```bash
# Kleine Änderung
echo "# Test" >> README.md
git add README.md
git commit -m "test: CI/CD pipeline test"
git push origin main
```

**Option B: Workflow manuell triggern**
```
https://git.michaelschiemer.de/michael/michaelschiemer/actions
→ "Production Deployment Pipeline"
→ "Run workflow"
```

### 2. Backup-Scripts erstellen

```bash
# Backup-Playbook erstellen
cd deployment/ansible/playbooks
# → Erstelle backup.yml
```

### 3. Dokumentation finalisieren

- Finale Updates in `DEPLOYMENT-STATUS.md`
- README aktualisieren

---

## 🆘 Troubleshooting

### Pipeline schlägt fehl

**Tests fehlgeschlagen:**
```bash
# Tests lokal ausführen
./vendor/bin/pest
composer cs
make phpstan
```

**Build fehlgeschlagen:**
```bash
# Docker Build lokal testen
docker build -f Dockerfile.production -t test .
```

**Deployment fehlgeschlagen:**
```bash
# Logs prüfen
ssh deploy@94.16.110.151 "cd ~/deployment/stacks/application && docker compose logs"

# Manueller Rollback
cd deployment/ansible
ansible-playbook -i inventory/production.yml playbooks/rollback.yml
```

### Runner-Probleme

```bash
# Runner-Status prüfen
cd deployment/gitea-runner
docker compose ps
docker compose logs gitea-runner

# Runner neu starten
docker compose restart gitea-runner
```

---

## 📞 Support

**Dokumentation:**
- `deployment/README.md` - Haupt-Dokumentation
- `deployment/CI_CD_STATUS.md` - CI/CD Details
- `deployment/CODE_CHANGE_WORKFLOW.md` - Workflow-Guide

**Gitea:**
- Actions: `https://git.michaelschiemer.de/michael/michaelschiemer/actions`
- Runners: `https://git.michaelschiemer.de/admin/actions/runners`

---

**Ready to deploy!** 🚀
