feat: Add branch-specific Gitea variables support
Some checks failed
Dev Deployment (Zero Downtime) / deploy-dev (push) Has been cancelled
Some checks failed
Dev Deployment (Zero Downtime) / deploy-dev (push) Has been cancelled
- 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
This commit is contained in:
@@ -101,8 +101,8 @@ jobs:
|
||||
echo "✅ Dev deployment completed!"
|
||||
env:
|
||||
NODE_ENV: staging
|
||||
LOG_LEVEL: ${{ vars.LOG_LEVEL || 'debug' }}
|
||||
NEXT_PUBLIC_BASE_URL: ${{ vars.NEXT_PUBLIC_BASE_URL || 'https://dev.dk0.dev' }}
|
||||
LOG_LEVEL: ${{ vars.LOG_LEVEL_DEV || vars.LOG_LEVEL || 'debug' }}
|
||||
NEXT_PUBLIC_BASE_URL: ${{ vars.NEXT_PUBLIC_BASE_URL_DEV || vars.NEXT_PUBLIC_BASE_URL || 'https://dev.dk0.dev' }}
|
||||
MY_EMAIL: ${{ vars.MY_EMAIL }}
|
||||
MY_INFO_EMAIL: ${{ vars.MY_INFO_EMAIL }}
|
||||
MY_PASSWORD: ${{ secrets.MY_PASSWORD }}
|
||||
|
||||
@@ -103,8 +103,8 @@ jobs:
|
||||
echo "✅ Production deployment completed with zero downtime!"
|
||||
env:
|
||||
NODE_ENV: production
|
||||
LOG_LEVEL: ${{ vars.LOG_LEVEL || 'info' }}
|
||||
NEXT_PUBLIC_BASE_URL: ${{ vars.NEXT_PUBLIC_BASE_URL || 'https://dk0.dev' }}
|
||||
LOG_LEVEL: ${{ vars.LOG_LEVEL_PRODUCTION || vars.LOG_LEVEL || 'info' }}
|
||||
NEXT_PUBLIC_BASE_URL: ${{ vars.NEXT_PUBLIC_BASE_URL_PRODUCTION || vars.NEXT_PUBLIC_BASE_URL || 'https://dk0.dev' }}
|
||||
MY_EMAIL: ${{ vars.MY_EMAIL }}
|
||||
MY_INFO_EMAIL: ${{ vars.MY_INFO_EMAIL }}
|
||||
MY_PASSWORD: ${{ secrets.MY_PASSWORD }}
|
||||
|
||||
179
GITEA_VARIABLES_SETUP.md
Normal file
179
GITEA_VARIABLES_SETUP.md
Normal file
@@ -0,0 +1,179 @@
|
||||
# 🔧 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?
|
||||
Reference in New Issue
Block a user