Files
portfolio/GITEA_VARIABLES_SETUP.md
denshooter d40fdf6d22
All checks were successful
Dev Deployment (Zero Downtime) / deploy-dev (push) Successful in 13m7s
fix: Simplify Gitea variables and improve staging banner design
- Remove branch-specific variable names (not needed)
- Each workflow uses its own default based on branch
- Users only need to set general variables, not branch-specific ones
- Redesign staging banner as floating box in bottom-right corner
- Better UX: doesn't block content, dismissible, modern design
2026-01-09 15:14:23 +01:00

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

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 (wenn gesetzt) oder Default: https://dk0.dev

Dev Workflow (.gitea/workflows/dev-deploy.yml):

  • Triggert nur auf dev Branch
  • Verwendet: NEXT_PUBLIC_BASE_URL (wenn gesetzt) oder Default: https://dev.dk0.dev

Das bedeutet:

  • Du setzt eine Variable NEXT_PUBLIC_BASE_URL in Gitea
  • Production Branch → verwendet diese Variable (oder Default https://dk0.dev)
  • Dev Branch → verwendet diese Variable (oder Default https://dev.dk0.dev)

⚠️ WICHTIG:

Da beide Workflows die gleiche Variable verwenden, aber unterschiedliche Defaults haben:

Option 1: Variable NICHT setzen (Empfohlen)

  • Production verwendet automatisch: https://dk0.dev
  • Dev verwendet automatisch: https://dev.dk0.dev
  • Funktioniert perfekt ohne Konfiguration!

Option 2: Variable setzen

  • Wenn du NEXT_PUBLIC_BASE_URL = https://dk0.dev setzt
  • Dann verwendet beide Branches diese URL (nicht ideal für Dev)
  • ⚠️ Nicht empfohlen, da Dev dann die Production-URL verwendet

Empfohlene Konfiguration

Einfachste Lösung: NICHTS setzen!

Die Workflows haben bereits die richtigen Defaults:

  • Production Branch → automatisch https://dk0.dev
  • Dev Branch → automatisch https://dev.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
  • N8N_SECRET_TOKEN = Dein n8n Token (optional)

⚠️ NICHT setzen:

  • NEXT_PUBLIC_BASE_URL - Lass diese Variable leer, damit jeder Branch seinen eigenen Default verwendet!

📝 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 einfache Logik:

# Production Workflow (triggert nur auf production branch)
NEXT_PUBLIC_BASE_URL: ${{ vars.NEXT_PUBLIC_BASE_URL || 'https://dk0.dev' }}

# Dev Workflow (triggert nur auf dev branch)
NEXT_PUBLIC_BASE_URL: ${{ vars.NEXT_PUBLIC_BASE_URL || 'https://dev.dk0.dev' }}

Das bedeutet:

  • Jeder Workflow hat seinen eigenen Default
  • Wenn NEXT_PUBLIC_BASE_URL in Gitea gesetzt ist, wird diese verwendet
  • Wenn nicht gesetzt, verwendet jeder Branch seinen eigenen Default

Beste Lösung:

  • NICHT NEXT_PUBLIC_BASE_URL in Gitea setzen
  • Dann verwendet Production automatisch https://dk0.dev
  • Und Dev verwendet automatisch https://dev.dk0.dev
  • Perfekt getrennt, ohne Konfiguration!

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