|
| 1 | +# 🚀 CI/CD Setup für SimpleSecCheck |
| 2 | + |
| 3 | +## Übersicht |
| 4 | + |
| 5 | +Dieses Projekt nutzt **GitHub Actions** für Continuous Integration und Continuous Delivery (CI/CD). |
| 6 | + |
| 7 | +### Was passiert automatisch? |
| 8 | + |
| 9 | +1. **Bei jedem Push auf `main`**: |
| 10 | + - Docker Image wird gebaut |
| 11 | + - Image wird auf Docker Hub gepusht |
| 12 | + - Tags werden automatisch erstellt |
| 13 | + |
| 14 | +2. **Bei Pull Requests**: |
| 15 | + - Docker Image wird gebaut und getestet |
| 16 | + - Image wird NICHT gepusht (nur Validierung) |
| 17 | + |
| 18 | +## 🔐 GitHub Secrets einrichten |
| 19 | + |
| 20 | +Damit die Pipeline funktioniert, musst du diese **GitHub Secrets** einrichten: |
| 21 | + |
| 22 | +### Schritt 1: Gehe zu deinem GitHub Repository |
| 23 | +- Navigiere zu: **Settings** → **Secrets and variables** → **Actions** |
| 24 | + |
| 25 | +### Schritt 2: Erstelle die folgenden Secrets |
| 26 | + |
| 27 | +#### `DOCKERHUB_USERNAME` |
| 28 | +- **Name**: `DOCKERHUB_USERNAME` |
| 29 | +- **Value**: `fr4iser` (dein Docker Hub Username) |
| 30 | + |
| 31 | +#### `DOCKERHUB_TOKEN` |
| 32 | +- **Name**: `DOCKERHUB_TOKEN` |
| 33 | +- **Wert**: Dein Docker Hub Personal Access Token |
| 34 | +- **Wie erstellt man einen Token?**: |
| 35 | + 1. Gehe zu https://hub.docker.com/settings/security |
| 36 | + 2. Klicke auf "New Access Token" |
| 37 | + 3. Gib ihm einen Namen (z.B. "github-actions") |
| 38 | + 4. Kopiere den Token (wird nur einmal angezeigt!) |
| 39 | + 5. Füge ihn als Secret `DOCKERHUB_TOKEN` in GitHub ein |
| 40 | + |
| 41 | +## 📋 Workflow-Details |
| 42 | + |
| 43 | +### Trigger |
| 44 | +Die Pipeline wird ausgelöst bei: |
| 45 | +- ✅ Pushes auf `main` branch |
| 46 | +- ✅ Pull Requests auf `main` |
| 47 | +- ✅ Manuelle Auslösung via GitHub UI |
| 48 | + |
| 49 | +### Tags |
| 50 | +Das Image wird mit folgenden Tags erstellt: |
| 51 | +- `latest` (nur bei main branch) |
| 52 | +- `main-<sha>` (z.B. `main-abc1234`) |
| 53 | +- `1.1.0` (Version aus build-args) |
| 54 | + |
| 55 | +### Cache-Optimierung |
| 56 | +- Docker Layer Caching wird verwendet für schnellere Builds |
| 57 | +- Verwendet: `fr4iser/simpleseccheck:buildcache` |
| 58 | + |
| 59 | +## 🎯 Manuelle Ausführung |
| 60 | + |
| 61 | +Du kannst die Pipeline auch manuell starten: |
| 62 | +1. Gehe zu **Actions** Tab |
| 63 | +2. Wähle "Build and Push Docker Image" |
| 64 | +3. Klicke "Run workflow" |
| 65 | + |
| 66 | +## 📊 Build-Status anzeigen |
| 67 | + |
| 68 | +Nach jedem Push siehst du den Build-Status: |
| 69 | +- 🟢 Grüner Checkmark = Erfolgreich |
| 70 | +- 🔴 Rotes X = Fehler |
| 71 | +- 🟡 Gelber Kreis = Läuft gerade |
| 72 | + |
| 73 | +## 🔧 Fehlerbehebung |
| 74 | + |
| 75 | +### "Authentication failed" Fehler |
| 76 | +- Überprüfe, ob die Docker Hub Secrets korrekt gesetzt sind |
| 77 | +- Stelle sicher, dass `DOCKERHUB_TOKEN` ein **Access Token** ist, nicht dein Passwort |
| 78 | + |
| 79 | +### "Permission denied" Fehler |
| 80 | +- Überprüfe, ob der Docker Hub Username korrekt ist |
| 81 | +- Stelle sicher, dass das Repository existiert auf Docker Hub |
| 82 | + |
| 83 | +## 🚀 Version hochsetzen |
| 84 | + |
| 85 | +Um die Version zu ändern: |
| 86 | +1. Bearbeite die Datei `VERSION` |
| 87 | +2. Bearbeite `build-args` in `.github/workflows/docker-build-push.yml` |
| 88 | +3. Committe und pushe die Änderungen |
| 89 | + |
| 90 | +```bash |
| 91 | +# Beispiel |
| 92 | +echo "1.2.0" > VERSION |
| 93 | +git add VERSION .github/workflows/docker-build-push.yml |
| 94 | +git commit -m "Bump version to 1.2.0" |
| 95 | +git push |
| 96 | +``` |
| 97 | + |
| 98 | +## 📚 Weitere Ressourcen |
| 99 | + |
| 100 | +- [GitHub Actions Dokumentation](https://docs.github.com/en/actions) |
| 101 | +- [Docker Buildx](https://docs.docker.com/build/buildx/) |
| 102 | +- [Docker Metadata Action](https://github.com/docker/metadata-action) |
| 103 | + |
0 commit comments