# 🔧 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 (`production` → `dk0.dev`) FĂŒr den `production` Branch brauchst du: ### Variables (öffentlich sichtbar): - `NEXT_PUBLIC_BASE_URL_PRODUCTION` = `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` - `ADMIN_SESSION_SECRET` = zufĂ€lliger Secret (mind. 32 Zeichen) - `N8N_SECRET_TOKEN` = Dein n8n Secret Token (optional) ## đŸ§Ș Variablen fĂŒr Dev Branch FĂŒr den `testing` Branch brauchst du die **gleichen** Variablen, aber mit anderen Werten: ### Variables: - `NEXT_PUBLIC_BASE_URL_TESTING` = `https://testing.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:testing_password` (kann anders sein) - `ADMIN_SESSION_SECRET` = zufĂ€lliger Secret (mind. 32 Zeichen; kann gleich sein) - `N8N_SECRET_TOKEN` = Dein n8n Secret Token (optional) ## ✅ Lösung: Automatische Branch-Erkennung **Gitea unterstĂŒtzt keine branch-spezifischen Variablen, aber die Workflows erkennen automatisch den Branch!** ### Wie es funktioniert: Die Workflows triggern auf unterschiedlichen Branches und verwenden automatisch die richtigen Defaults: **Production Workflow** (`.gitea/workflows/production-deploy.yml`): - Triggert nur auf `production` Branch - Verwendet: `NEXT_PUBLIC_BASE_URL_PRODUCTION` (wenn gesetzt) oder Default: `https://dk0.dev` **Testing Workflow** (`.gitea/workflows/dev-deploy.yml`): - Triggert nur auf `testing` Branch - Verwendet: `NEXT_PUBLIC_BASE_URL_TESTING` (wenn gesetzt) oder Default: `https://testing.dk0.dev` **Das bedeutet:** - Du setzt **zwei** Variablen in Gitea (empfohlen, weil Gitea nicht branch-spezifisch scoped): - `NEXT_PUBLIC_BASE_URL_PRODUCTION` - `NEXT_PUBLIC_BASE_URL_TESTING` ### ⚠ WICHTIG: Gitea kann Variablen/Secrets nicht pro Branch trennen. Darum nutzen wir **separate Variablennamen** fĂŒr Production und Testing. ## ✅ Empfohlene Konfiguration ### ⭐ Einfachste Lösung: nur URLs setzen (optional) Die Workflows haben bereits die richtigen Defaults: - **Production Branch** → automatisch `https://dk0.dev` - **Testing Branch** → automatisch `https://testing.dk0.dev` Du musst **NICHTS** in Gitea setzen, es funktioniert automatisch! ### Wenn du Variablen setzen willst: **Nur diese Variablen setzen (fĂŒr beide Branches):** - `MY_EMAIL` = `contact@dk0.dev` - `MY_INFO_EMAIL` = `info@dk0.dev` - `LOG_LEVEL` = `info` (wird fĂŒr Production verwendet, Dev ĂŒberschreibt mit `debug`) **Secrets (fĂŒr beide Branches):** - `MY_PASSWORD` = Dein Email-Passwort - `MY_INFO_PASSWORD` = Dein Info-Email-Passwort - `ADMIN_BASIC_AUTH` = `admin:dein_passwort` - `ADMIN_SESSION_SECRET` = zufĂ€lliger Secret (mind. 32 Zeichen) - `N8N_SECRET_TOKEN` = Dein n8n Token (optional) **Optional setzen:** - `NEXT_PUBLIC_BASE_URL_PRODUCTION` = `https://dk0.dev` - `NEXT_PUBLIC_BASE_URL_TESTING` = `https://testing.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_PRODUCTION` - **Value:** `https://dk0.dev` - **Protect:** ✅ (optional, schĂŒtzt vor Änderungen) - Klicke **"Add Variable"** - Klicke auf **"New Variable"** - **Name:** `NEXT_PUBLIC_BASE_URL_TESTING` - **Value:** `https://testing.dk0.dev` - **Protect:** ✅ (optional) - 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 einfache Logik: ```yaml # Production Workflow (triggert nur auf production branch) NEXT_PUBLIC_BASE_URL: ${{ vars.NEXT_PUBLIC_BASE_URL_PRODUCTION || 'https://dk0.dev' }} # Testing Workflow (triggert nur auf testing branch) NEXT_PUBLIC_BASE_URL: ${{ vars.NEXT_PUBLIC_BASE_URL_TESTING || 'https://testing.dk0.dev' }} ``` **Das bedeutet:** - Jeder Workflow hat seinen **eigenen Default** - Wenn die jeweilige Variable (`NEXT_PUBLIC_BASE_URL_PRODUCTION` / `NEXT_PUBLIC_BASE_URL_TESTING`) in Gitea gesetzt ist, wird diese verwendet - Wenn **nicht** gesetzt, verwendet jeder Branch seinen eigenen Default **⭐ Beste Lösung:** - Setze `NEXT_PUBLIC_BASE_URL_PRODUCTION` und `NEXT_PUBLIC_BASE_URL_TESTING` (oder lass beide weg und nutze Defaults). ## 🎯 Best Practice 1. **Production (`production`)**: `docker-compose.production.yml` → Port 3000 → NPM Host `dk0.dev` 2. **Testing (`testing`)**: `docker-compose.testing.yml` → Port 3002 → NPM Host `testing.dk0.dev` 3. **Secrets**: immer als Gitea Secrets, nie im Code