diff --git a/.gitea/workflows/dev-deploy.yml b/.gitea/workflows/dev-deploy.yml index d31ebf9..b6bfc67 100644 --- a/.gitea/workflows/dev-deploy.yml +++ b/.gitea/workflows/dev-deploy.yml @@ -101,8 +101,8 @@ jobs: echo "✅ Dev deployment completed!" env: NODE_ENV: staging - LOG_LEVEL: ${{ vars.LOG_LEVEL || 'debug' }} - NEXT_PUBLIC_BASE_URL: ${{ vars.NEXT_PUBLIC_BASE_URL || 'https://dev.dk0.dev' }} + LOG_LEVEL: ${{ vars.LOG_LEVEL_DEV || vars.LOG_LEVEL || 'debug' }} + NEXT_PUBLIC_BASE_URL: ${{ vars.NEXT_PUBLIC_BASE_URL_DEV || vars.NEXT_PUBLIC_BASE_URL || 'https://dev.dk0.dev' }} MY_EMAIL: ${{ vars.MY_EMAIL }} MY_INFO_EMAIL: ${{ vars.MY_INFO_EMAIL }} MY_PASSWORD: ${{ secrets.MY_PASSWORD }} diff --git a/.gitea/workflows/production-deploy.yml b/.gitea/workflows/production-deploy.yml index d92ce0c..98991cb 100644 --- a/.gitea/workflows/production-deploy.yml +++ b/.gitea/workflows/production-deploy.yml @@ -103,8 +103,8 @@ jobs: echo "✅ Production deployment completed with zero downtime!" env: NODE_ENV: production - LOG_LEVEL: ${{ vars.LOG_LEVEL || 'info' }} - NEXT_PUBLIC_BASE_URL: ${{ vars.NEXT_PUBLIC_BASE_URL || 'https://dk0.dev' }} + LOG_LEVEL: ${{ vars.LOG_LEVEL_PRODUCTION || vars.LOG_LEVEL || 'info' }} + NEXT_PUBLIC_BASE_URL: ${{ vars.NEXT_PUBLIC_BASE_URL_PRODUCTION || vars.NEXT_PUBLIC_BASE_URL || 'https://dk0.dev' }} MY_EMAIL: ${{ vars.MY_EMAIL }} MY_INFO_EMAIL: ${{ vars.MY_INFO_EMAIL }} MY_PASSWORD: ${{ secrets.MY_PASSWORD }} diff --git a/GITEA_VARIABLES_SETUP.md b/GITEA_VARIABLES_SETUP.md new file mode 100644 index 0000000..636617e --- /dev/null +++ b/GITEA_VARIABLES_SETUP.md @@ -0,0 +1,179 @@ +# 🔧 Gitea Variables & Secrets Setup Guide + +## Übersicht + +In Gitea kannst du **Variables** (öffentlich) und **Secrets** (verschlüsselt) für dein Repository setzen. Diese werden in den CI/CD Workflows verwendet. + +## 📍 Wo findest du die Einstellungen? + +1. Gehe zu deinem Repository auf Gitea +2. Klicke auf **Settings** (Einstellungen) +3. Klicke auf **Variables** oder **Secrets** im linken Menü + +## 🔑 Variablen für Production Branch + +Für den `production` Branch brauchst du: + +### Variables (öffentlich sichtbar): +- `NEXT_PUBLIC_BASE_URL` = `https://dk0.dev` +- `MY_EMAIL` = `contact@dk0.dev` (oder deine Email) +- `MY_INFO_EMAIL` = `info@dk0.dev` (oder deine Info-Email) +- `LOG_LEVEL` = `info` +- `N8N_WEBHOOK_URL` = `https://n8n.dk0.dev` (optional) + +### Secrets (verschlüsselt): +- `MY_PASSWORD` = Dein Email-Passwort +- `MY_INFO_PASSWORD` = Dein Info-Email-Passwort +- `ADMIN_BASIC_AUTH` = `admin:dein_sicheres_passwort` +- `N8N_SECRET_TOKEN` = Dein n8n Secret Token (optional) + +## 🧪 Variablen für Dev Branch + +Für den `dev` Branch brauchst du die **gleichen** Variablen, aber mit anderen Werten: + +### Variables: +- `NEXT_PUBLIC_BASE_URL` = `https://dev.dk0.dev` ⚠️ **WICHTIG: Andere URL!** +- `MY_EMAIL` = `contact@dk0.dev` (kann gleich sein) +- `MY_INFO_EMAIL` = `info@dk0.dev` (kann gleich sein) +- `LOG_LEVEL` = `debug` (für Dev mehr Logging) +- `N8N_WEBHOOK_URL` = `https://n8n.dk0.dev` (optional) + +### Secrets: +- `MY_PASSWORD` = Dein Email-Passwort (kann gleich sein) +- `MY_INFO_PASSWORD` = Dein Info-Email-Passwort (kann gleich sein) +- `ADMIN_BASIC_AUTH` = `admin:staging_password` (kann anders sein) +- `N8N_SECRET_TOKEN` = Dein n8n Secret Token (optional) + +## ⚠️ Problem: Gitea unterstützt keine branch-spezifischen Variablen + +**Gitea hat keine eingebaute Funktion für branch-spezifische Variablen!** + +### Lösung 1: Separate Variablen (Empfohlen) + +Du kannst Variablen mit Suffixen erstellen: + +**Variables:** +- `NEXT_PUBLIC_BASE_URL_PRODUCTION` = `https://dk0.dev` +- `NEXT_PUBLIC_BASE_URL_DEV` = `https://dev.dk0.dev` +- `LOG_LEVEL_PRODUCTION` = `info` +- `LOG_LEVEL_DEV` = `debug` + +Dann musst du die Workflows anpassen, um die richtige Variable zu verwenden. + +### Lösung 2: Workflow-spezifische Werte (Aktuell implementiert) + +Die Workflows haben bereits **Hardcoded Defaults**: + +**Production Workflow** (`.gitea/workflows/production-deploy.yml`): +```yaml +NEXT_PUBLIC_BASE_URL: ${{ vars.NEXT_PUBLIC_BASE_URL || 'https://dk0.dev' }} +``` + +**Dev Workflow** (`.gitea/workflows/dev-deploy.yml`): +```yaml +NEXT_PUBLIC_BASE_URL: ${{ vars.NEXT_PUBLIC_BASE_URL || 'https://dev.dk0.dev' }} +``` + +**Das bedeutet:** +- Wenn `NEXT_PUBLIC_BASE_URL` in Gitea gesetzt ist → wird verwendet +- Wenn **nicht** gesetzt → verwendet den Default (Production: `dk0.dev`, Dev: `dev.dk0.dev`) + +## ✅ Empfohlene Konfiguration (JETZT IMPLEMENTIERT!) + +Die Workflows unterstützen jetzt **branch-spezifische Variablen**: + +### Für Production: +Setze in Gitea Variables: +- `NEXT_PUBLIC_BASE_URL_PRODUCTION` = `https://dk0.dev` ⭐ **Empfohlen** +- ODER `NEXT_PUBLIC_BASE_URL` = `https://dk0.dev` (Fallback) +- `LOG_LEVEL_PRODUCTION` = `info` (optional) +- ODER `LOG_LEVEL` = `info` (Fallback) + +### Für Dev: +Setze in Gitea Variables: +- `NEXT_PUBLIC_BASE_URL_DEV` = `https://dev.dk0.dev` ⭐ **Empfohlen** +- ODER `NEXT_PUBLIC_BASE_URL` = `https://dev.dk0.dev` (Fallback) +- `LOG_LEVEL_DEV` = `debug` (optional) +- ODER `LOG_LEVEL` = `debug` (Fallback) + +### Fallback-Logik: +1. Zuerst wird die branch-spezifische Variable geprüft (`NEXT_PUBLIC_BASE_URL_PRODUCTION` / `NEXT_PUBLIC_BASE_URL_DEV`) +2. Falls nicht gesetzt, wird die allgemeine Variable verwendet (`NEXT_PUBLIC_BASE_URL`) +3. Falls auch die nicht gesetzt ist, wird der Default verwendet (`https://dk0.dev` / `https://dev.dk0.dev`) + +## 📝 Schritt-für-Schritt Anleitung + +### 1. Gehe zu Repository Settings +``` +https://git.dk0.dev/denshooter/portfolio/settings +``` + +### 2. Klicke auf "Variables" oder "Secrets" + +### 3. Für Variables (öffentlich): +- Klicke auf **"New Variable"** +- **Name:** `NEXT_PUBLIC_BASE_URL` +- **Value:** `https://dk0.dev` (für Production) +- **Protect:** ✅ (optional, schützt vor Änderungen) +- Klicke **"Add Variable"** + +### 4. Für Secrets (verschlüsselt): +- Klicke auf **"New Secret"** +- **Name:** `MY_PASSWORD` +- **Value:** Dein Passwort +- Klicke **"Add Secret"** + +## 🔄 Aktuelle Workflow-Logik + +Die Workflows verwenden diese Logik: + +```yaml +# Production +NEXT_PUBLIC_BASE_URL: ${{ vars.NEXT_PUBLIC_BASE_URL_PRODUCTION || vars.NEXT_PUBLIC_BASE_URL || 'https://dk0.dev' }} + +# Dev +NEXT_PUBLIC_BASE_URL: ${{ vars.NEXT_PUBLIC_BASE_URL_DEV || vars.NEXT_PUBLIC_BASE_URL || 'https://dev.dk0.dev' }} +``` + +**Das bedeutet:** +1. **Production** sucht zuerst nach `NEXT_PUBLIC_BASE_URL_PRODUCTION`, dann `NEXT_PUBLIC_BASE_URL`, dann Default +2. **Dev** sucht zuerst nach `NEXT_PUBLIC_BASE_URL_DEV`, dann `NEXT_PUBLIC_BASE_URL`, dann Default + +**Empfehlung:** +- Setze `NEXT_PUBLIC_BASE_URL_PRODUCTION` = `https://dk0.dev` für Production +- Setze `NEXT_PUBLIC_BASE_URL_DEV` = `https://dev.dk0.dev` für Dev +- So kannst du beide Branches unabhängig konfigurieren! + +## 🎯 Best Practice + +1. **Production:** Setze alle Variablen explizit in Gitea +2. **Dev:** Nutze die Defaults im Workflow (oder setze separate Variablen) +3. **Secrets:** Immer in Gitea Secrets setzen, nie in Code! + +## 🔍 Prüfen ob Variablen gesetzt sind + +In den Workflow-Logs siehst du: +``` +📝 Using Gitea Variables and Secrets: + - NEXT_PUBLIC_BASE_URL: https://dk0.dev +``` + +Wenn eine Variable fehlt, wird der Default verwendet. + +## ⚙️ Alternative: Environment-spezifische Variablen + +Falls du separate Variablen für Dev und Production willst, können wir die Workflows anpassen: + +```yaml +# Production +NEXT_PUBLIC_BASE_URL: ${{ vars.NEXT_PUBLIC_BASE_URL_PRODUCTION || 'https://dk0.dev' }} + +# Dev +NEXT_PUBLIC_BASE_URL: ${{ vars.NEXT_PUBLIC_BASE_URL_DEV || 'https://dev.dk0.dev' }} +``` + +Dann könntest du setzen: +- `NEXT_PUBLIC_BASE_URL_PRODUCTION` = `https://dk0.dev` +- `NEXT_PUBLIC_BASE_URL_DEV` = `https://dev.dk0.dev` + +Soll ich die Workflows entsprechend anpassen?