CI Test
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m10s
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m10s
This commit is contained in:
128
docker/GITEA_SETUP.md
Normal file
128
docker/GITEA_SETUP.md
Normal file
@@ -0,0 +1,128 @@
|
||||
# Gitea CI/CD Setup
|
||||
|
||||
Diese Anleitung erklärt, wie Sie die benötigten Variables und Secrets in Gitea für den automatischen Build und Push Workflow einrichten.
|
||||
|
||||
## Gitea Workflow
|
||||
|
||||
Der Workflow `.gitea/workflows/build-and-push.yaml` wird automatisch ausgeführt und:
|
||||
1. Bestimmt automatisch den Image-Tag basierend auf dem Commit/Tag
|
||||
2. Baut das Docker Image
|
||||
3. Pusht das Image zur Gitea Registry
|
||||
|
||||
### Automatische Tag-Generierung
|
||||
|
||||
Der IMAGE_TAG wird automatisch bestimmt:
|
||||
|
||||
| Trigger | Tag-Format | Beispiel |
|
||||
|---------|-----------|----------|
|
||||
| Push auf `main` Branch | `latest` | `latest` |
|
||||
| Git Tag (v*) | Tag-Name | `v1.0.0`, `v2.1.3` |
|
||||
| Andere Branches | `{branch}-{sha}` | `develop-a1b2c3d` |
|
||||
|
||||
**Sie müssen IMAGE_TAG NICHT mehr als Variable setzen** - es wird automatisch generiert!
|
||||
|
||||
## Benötigte Gitea Variables und Secrets
|
||||
|
||||
### Variables (öffentlich)
|
||||
|
||||
Navigieren Sie zu: **Settings → Actions → Variables**
|
||||
|
||||
Erstellen Sie folgende Variables:
|
||||
|
||||
| Name | Wert | Beispiel |
|
||||
|------|------|----------|
|
||||
| `REGISTRY_URL` | URL der Gitea Registry | `gitea.moz-tech.de` |
|
||||
| `NAMESPACE` | Namespace/Benutzer | `murat` |
|
||||
| `REPO_NAME` | Repository Name | `enerport-web-app` |
|
||||
|
||||
**Hinweis:** `IMAGE_TAG` wird automatisch aus dem Commit/Tag generiert und muss nicht als Variable gesetzt werden.
|
||||
|
||||
### Secrets (vertraulich)
|
||||
|
||||
Navigieren Sie zu: **Settings → Actions → Secrets**
|
||||
|
||||
Erstellen Sie folgende Secrets:
|
||||
|
||||
| Name | Wert | Beispiel |
|
||||
|------|------|----------|
|
||||
| `CI_GITEA_USER` | Gitea Benutzername | `murat` |
|
||||
| `CI_GITEA_TOKEN` | Gitea Access Token | `74a7738116bfb99497a7781291efc5766901f497` |
|
||||
|
||||
**Hinweis:**
|
||||
- User und Token werden zusammen als Secrets gespeichert für eine sichere Authentifizierung
|
||||
- Der Prefix `CI_GITEA_` ist erforderlich, da Gitea keine Variablen mit dem Prefix `GITEA_` erlaubt
|
||||
|
||||
## Access Token erstellen
|
||||
|
||||
1. Navigieren Sie zu **Settings → Applications → Manage Access Tokens**
|
||||
2. Klicken Sie auf **Generate New Token**
|
||||
3. Geben Sie einen Namen ein (z.B. "Docker Registry")
|
||||
4. Wählen Sie die Berechtigung: **write:package** (für Registry Push)
|
||||
5. Klicken Sie auf **Generate Token**
|
||||
6. Kopieren Sie den Token und fügen Sie ihn als Secret `CI_GITEA_TOKEN` hinzu
|
||||
|
||||
## Workflow testen
|
||||
|
||||
Nach der Einrichtung der Variables und Secrets:
|
||||
|
||||
### Test 1: Push auf main Branch (erstellt 'latest' Tag)
|
||||
```bash
|
||||
git add .
|
||||
git commit -m "Test CI/CD workflow"
|
||||
git push origin main
|
||||
```
|
||||
→ Erstellt Image: `gitea.moz-tech.de/murat/enerport-web-app:latest`
|
||||
|
||||
### Test 2: Git Tag erstellen (erstellt versioniertes Image)
|
||||
```bash
|
||||
git tag v1.0.0
|
||||
git push origin v1.0.0
|
||||
```
|
||||
→ Erstellt Image: `gitea.moz-tech.de/murat/enerport-web-app:v1.0.0`
|
||||
|
||||
### Workflow-Status überprüfen:
|
||||
- Navigieren Sie zu **Actions** in Ihrem Gitea Repository
|
||||
- Sie sollten den Workflow "Build and Push Docker Image" sehen
|
||||
- Klicken Sie darauf, um die Logs und den verwendeten Tag zu sehen
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Fehler: "REGISTRY_URL not set in .env"
|
||||
→ Stellen Sie sicher, dass alle Variables korrekt in Gitea eingerichtet sind
|
||||
|
||||
### Fehler: "Failed to login to registry"
|
||||
→ Überprüfen Sie das `GITEA_TOKEN` Secret und stellen Sie sicher, dass es die **write:package** Berechtigung hat
|
||||
|
||||
### Fehler: "Image not found locally"
|
||||
→ Der Build-Schritt ist fehlgeschlagen. Überprüfen Sie die Build-Logs im Workflow
|
||||
|
||||
## Lokale Entwicklung vs. CI/CD
|
||||
|
||||
### Lokal:
|
||||
- Verwendet die `docker/.env` Datei
|
||||
- Manuelle Ausführung von `./build.sh` und `./push.sh`
|
||||
|
||||
### CI/CD (Gitea):
|
||||
- Erstellt `.env` Datei automatisch aus Gitea Variables/Secrets
|
||||
- Automatische Ausführung bei jedem Push auf `main`
|
||||
|
||||
## Sicherheit
|
||||
|
||||
⚠️ **Wichtig:**
|
||||
- Committen Sie die `docker/.env` Datei NIEMALS in Git (bereits in `.gitignore`)
|
||||
- Das `GITEA_TOKEN` sollte nur als Secret gespeichert werden
|
||||
- Alle anderen Werte können als Variables gespeichert werden
|
||||
|
||||
## Image Pull
|
||||
|
||||
Nach erfolgreichem Push können Sie das Image wie folgt pullen:
|
||||
|
||||
```bash
|
||||
# Login zur Registry
|
||||
docker login gitea.moz-tech.de -u murat
|
||||
|
||||
# Image pullen
|
||||
docker pull gitea.moz-tech.de/murat/enerport-web-app:latest
|
||||
|
||||
# Container starten
|
||||
docker run -p 8080:8080 gitea.moz-tech.de/murat/enerport-web-app:latest
|
||||
Reference in New Issue
Block a user