Files
portfolio/GITEA_VARIABLES_SETUP.md
denshooter 9486116fd8
Some checks failed
Dev Deployment (Zero Downtime) / deploy-dev (push) Has been cancelled
feat: Add branch-specific Gitea variables support
- 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
2026-01-09 15:01:29 +01:00

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?

  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):

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_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:

# 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:

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