# 🔧 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?