Files
breakpilot-compliance/docs-src/development/ci-cd-pipeline.md
Benjamin Admin 399fa62267 docs: update all docs to reflect Coolify deployment model
Replace Hetzner references with Coolify. Deployment is now:
- Core + Compliance: Push gitea → Coolify auto-deploys
- Lehrer: stays local on Mac Mini

Updated: CLAUDE.md, MkDocs CI/CD pipeline, MkDocs index.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 12:09:51 +01:00

146 lines
6.0 KiB
Markdown

# CI/CD Pipeline
Uebersicht ueber den Deployment-Prozess fuer BreakPilot Compliance.
## Uebersicht
| Komponente | Build-Tool | Deployment |
|------------|------------|------------|
| Frontend (Next.js) | Docker | Coolify (automatisch) |
| Backend (FastAPI) | Docker | Coolify (automatisch) |
| Go Services | Docker (Multi-stage) | Coolify (automatisch) |
| Documentation | MkDocs | Docker (Nginx, lokal) |
## Deployment-Architektur
```
┌─────────────────────────────────────────────────────────────────┐
│ Entwickler-MacBook │
│ │
│ breakpilot-compliance/ │
│ ├── admin-compliance/ (Next.js Dashboard) │
│ ├── backend-compliance/ (Python FastAPI) │
│ ├── ai-compliance-sdk/ (Go/Gin) │
│ ├── developer-portal/ (Next.js) │
│ └── docs-src/ (MkDocs) │
│ │
│ git push origin main && git push gitea main │
└───────────────────────────────┬─────────────────────────────────┘
│ git push
┌─────────────────────────────────────────────────────────────────┐
│ Gitea (gitea.meghsakha.com) │
│ │
│ Gitea Actions CI: │
│ ├── test-go-ai-compliance │
│ ├── test-python-backend-compliance │
│ ├── test-python-document-crawler │
│ ├── test-python-dsms-gateway │
│ └── validate-canonical-controls │
│ │
│ Coolify Webhook → Build + Deploy (automatisch) │
└─────────────────────────────────────────────────────────────────┘
│ auto-deploy
┌─────────────────────────────────────────────────────────────────┐
│ Production (Coolify) │
│ │
│ ├── admin-dev.breakpilot.ai (Admin Compliance) │
│ ├── api-dev.breakpilot.ai (Backend API) │
│ ├── sdk-dev.breakpilot.ai (AI SDK) │
│ └── developers-dev.breakpilot.ai (Developer Portal) │
└─────────────────────────────────────────────────────────────────┘
```
## Workflow
### 1. Code entwickeln und committen
```bash
# Code auf MacBook bearbeiten
# Committen und zu beiden Remotes pushen:
git push origin main && git push gitea main
```
### 2. Automatische Tests (Gitea Actions)
Push auf gitea triggert automatisch die CI-Pipeline:
- **Go Tests:** `ai-compliance-sdk` Unit Tests
- **Python Tests:** `backend-compliance`, `document-crawler`, `dsms-gateway`
- **Validierung:** Canonical Controls JSON-Validierung
- **Lint:** Go, Python, Node.js (nur bei PRs)
### 3. Automatisches Deployment (Coolify)
Nach erfolgreichem Push baut Coolify automatisch alle Services und deployt sie.
**WICHTIG:** Niemals manuell in Coolify auf "Redeploy" klicken!
### 4. Health Checks
```bash
# Production Health pruefen
curl -sf https://api-dev.breakpilot.ai/health
curl -sf https://sdk-dev.breakpilot.ai/health
```
## CI Pipeline-Konfiguration
**Datei:** `.gitea/workflows/ci.yaml`
```yaml
on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]
jobs:
test-go-ai-compliance: # Go Unit Tests
test-python-backend: # Python Unit Tests
test-python-document-crawler:
test-python-dsms-gateway:
validate-canonical-controls: # JSON Validierung
go-lint: # Nur bei PRs
python-lint: # Nur bei PRs
nodejs-lint: # Nur bei PRs
```
## Lokale Entwicklung (Mac Mini)
Fuer lokale Tests ohne Coolify:
```bash
# Auf Mac Mini pullen und bauen
ssh macmini "git -C ~/Projekte/breakpilot-compliance pull --no-rebase origin main"
ssh macmini "/usr/local/bin/docker compose -f ~/Projekte/breakpilot-compliance/docker-compose.yml build --no-cache <service>"
ssh macmini "/usr/local/bin/docker compose -f ~/Projekte/breakpilot-compliance/docker-compose.yml up -d <service>"
```
## Troubleshooting
### CI-Status pruefen
```bash
# Im Browser:
# https://gitea.meghsakha.com/Benjamin_Boenisch/breakpilot-compliance/actions
```
### Container-Logs (lokal)
```bash
ssh macmini "/usr/local/bin/docker logs -f bp-compliance-<service>"
```
### Build-Fehler
```bash
# Lokalen Build-Cache leeren
ssh macmini "/usr/local/bin/docker builder prune -a"
```