- Support NEXT_PUBLIC_BASE_URL_PRODUCTION and NEXT_PUBLIC_BASE_URL_DEV - Support LOG_LEVEL_PRODUCTION and LOG_LEVEL_DEV - Fallback to general variables if branch-specific not set - Add comprehensive GITEA_VARIABLES_SETUP.md guide - Allows independent configuration for production and dev branches
6.0 KiB
🔧 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?
- Gehe zu deinem Repository auf Gitea
- Klicke auf Settings (Einstellungen)
- 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.devMY_EMAIL=contact@dk0.dev(oder deine Email)MY_INFO_EMAIL=info@dk0.dev(oder deine Info-Email)LOG_LEVEL=infoN8N_WEBHOOK_URL=https://n8n.dk0.dev(optional)
Secrets (verschlüsselt):
MY_PASSWORD= Dein Email-PasswortMY_INFO_PASSWORD= Dein Info-Email-PasswortADMIN_BASIC_AUTH=admin:dein_sicheres_passwortN8N_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.devNEXT_PUBLIC_BASE_URL_DEV=https://dev.dk0.devLOG_LEVEL_PRODUCTION=infoLOG_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):
NEXT_PUBLIC_BASE_URL: ${{ vars.NEXT_PUBLIC_BASE_URL || 'https://dk0.dev' }}
Dev Workflow (.gitea/workflows/dev-deploy.yml):
NEXT_PUBLIC_BASE_URL: ${{ vars.NEXT_PUBLIC_BASE_URL || 'https://dev.dk0.dev' }}
Das bedeutet:
- Wenn
NEXT_PUBLIC_BASE_URLin 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:
- Zuerst wird die branch-spezifische Variable geprüft (
NEXT_PUBLIC_BASE_URL_PRODUCTION/NEXT_PUBLIC_BASE_URL_DEV) - Falls nicht gesetzt, wird die allgemeine Variable verwendet (
NEXT_PUBLIC_BASE_URL) - 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:
# 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:
- Production sucht zuerst nach
NEXT_PUBLIC_BASE_URL_PRODUCTION, dannNEXT_PUBLIC_BASE_URL, dann Default - Dev sucht zuerst nach
NEXT_PUBLIC_BASE_URL_DEV, dannNEXT_PUBLIC_BASE_URL, dann Default
Empfehlung:
- Setze
NEXT_PUBLIC_BASE_URL_PRODUCTION=https://dk0.devfür Production - Setze
NEXT_PUBLIC_BASE_URL_DEV=https://dev.dk0.devfür Dev - So kannst du beide Branches unabhängig konfigurieren!
🎯 Best Practice
- Production: Setze alle Variablen explizit in Gitea
- Dev: Nutze die Defaults im Workflow (oder setze separate Variablen)
- 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:
# 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.devNEXT_PUBLIC_BASE_URL_DEV=https://dev.dk0.dev
Soll ich die Workflows entsprechend anpassen?