- Update Gitea configuration (remove DEFAULT_ACTIONS_URL) - Fix deployment documentation - Update Ansible playbooks - Clean up deprecated files - Add new deployment scripts and templates
298 lines
8.3 KiB
Markdown
298 lines
8.3 KiB
Markdown
# Gitea Secrets Setup - Vollständige Anleitung
|
|
|
|
## Problem: "Secrets" fehlt in Repository Settings
|
|
|
|
Wenn du unter **Repository → Settings** keine "Secrets" Option siehst, kann das verschiedene Gründe haben. Diese Anleitung zeigt alle Möglichkeiten, wie Secrets in Gitea konfiguriert werden können.
|
|
|
|
## 📍 Wo finde ich Secrets in Gitea?
|
|
|
|
### Option 1: Repository Secrets (Standard)
|
|
|
|
**Pfad:** `Repository → Settings → Secrets`
|
|
|
|
⚠️ **Falls diese Option fehlt:**
|
|
- Gitea Actions muss für das Repository aktiviert sein
|
|
- Benötigt Berechtigung: Repository Owner oder Admin
|
|
- Manche Gitea-Versionen haben Secrets an anderen Orten
|
|
|
|
### Option 2: Über Actions/Tabs
|
|
|
|
Manche Gitea-Versionen haben Secrets unter:
|
|
- **Repository → Settings → Actions → Secrets**
|
|
- **Repository → Actions → Secrets**
|
|
|
|
### Option 3: Organization/Admin Level
|
|
|
|
Falls Repository-Secrets nicht verfügbar sind, können Secrets auf Organisations-Level gesetzt werden:
|
|
|
|
1. **Als Admin:** `Site Administration → Actions → Secrets`
|
|
2. **Als Org-Owner:** `Organization Settings → Actions → Secrets`
|
|
|
|
### Option 4: Via Gitea API (Programmatisch)
|
|
|
|
Falls die UI-Option fehlt, können Secrets via API gesetzt werden:
|
|
|
|
```bash
|
|
# Siehe: scripts/setup-gitea-secrets.sh
|
|
```
|
|
|
|
## 🔍 Diagnose: Warum sehe ich keine Secrets-Option?
|
|
|
|
### Checkliste:
|
|
|
|
1. **Ist Gitea Actions aktiviert?**
|
|
- Gehe zu: **Site Administration → Actions → Settings**
|
|
- Stelle sicher, dass Actions aktiviert ist
|
|
|
|
2. **Hast du die richtigen Berechtigungen?**
|
|
- Du musst Repository Owner oder Admin sein
|
|
- Prüfe: **Repository → Settings → Collaborators**
|
|
|
|
3. **Welche Gitea-Version wird verwendet?**
|
|
- Neuere Versionen haben Secrets unter Repository → Settings → Secrets
|
|
- Ältere Versionen könnten andere Pfade haben
|
|
|
|
4. **Sind Actions für das Repository aktiviert?**
|
|
- Prüfe ob Workflows unter **Repository → Actions** sichtbar sind
|
|
- Falls nicht, müssen Actions für das Repository aktiviert werden
|
|
|
|
## 🛠️ Lösung: Secrets manuell setzen
|
|
|
|
### Methode 1: Via Gitea API (Empfohlen)
|
|
|
|
Wenn die UI-Option fehlt, verwende das Setup-Script:
|
|
|
|
```bash
|
|
# Script vorbereiten
|
|
cd /home/michael/dev/michaelschiemer
|
|
|
|
# Setze deine Gitea-Credentials
|
|
export GITEA_URL="https://git.michaelschiemer.de"
|
|
export GITEA_TOKEN="dein-gitea-token" # Siehe unten wie man einen Token erstellt
|
|
export REPO_OWNER="dein-username" # Oder Organization-Name
|
|
export REPO_NAME="michaelschiemer"
|
|
|
|
# Setze die Secrets
|
|
./scripts/setup-gitea-secrets.sh
|
|
```
|
|
|
|
**Gitea Token erstellen:**
|
|
1. Gehe zu: `https://git.michaelschiemer.de/user/settings/applications`
|
|
2. Scrolle zu "Generate New Token"
|
|
3. Name: z.B. "CI/CD Secrets Setup"
|
|
4. Scopes: `write:repository` (mindestens)
|
|
5. Klicke "Generate Token"
|
|
6. Kopiere den Token (wird nur einmal angezeigt!)
|
|
|
|
### Methode 2: Environment-Variablen im Runner (Alternative)
|
|
|
|
Falls Repository Secrets wirklich nicht verfügbar sind, können Secrets auch als Environment-Variablen im Runner konfiguriert werden:
|
|
|
|
**In `deployment/gitea-runner/docker-compose.yml`:**
|
|
|
|
```yaml
|
|
services:
|
|
gitea-runner:
|
|
environment:
|
|
- REGISTRY_USER=admin
|
|
- REGISTRY_PASSWORD=registry-secure-password-2025
|
|
# Weitere Secrets...
|
|
```
|
|
|
|
⚠️ **Nicht empfohlen:** Weniger sicher, da Secrets im docker-compose.yml gespeichert werden.
|
|
|
|
### Methode 3: Secrets im Workflow hardcoden (NICHT EMPFOHLEN!)
|
|
|
|
**⚠️ NIEMALS PASSWÖRTER IM CODE SPEICHERN!**
|
|
|
|
Diese Methode sollte nur für Tests verwendet werden und ist für Produktion unsicher.
|
|
|
|
## 📝 Schritt-für-Schritt: Secrets via API setzen
|
|
|
|
### Schritt 1: Gitea Token erstellen
|
|
|
|
1. Gehe zu: `https://git.michaelschiemer.de/user/settings/applications`
|
|
2. Scrolle zu "Generate New Token"
|
|
3. **Name:** `CI/CD Secrets Management`
|
|
4. **Scopes:** Wähle:
|
|
- ✅ `read:repository`
|
|
- ✅ `write:repository`
|
|
- ✅ `read:organization` (falls Org-Repo)
|
|
5. Klicke **"Generate Token"**
|
|
6. **Kopiere den Token sofort** (wird nur einmal angezeigt!)
|
|
|
|
### Schritt 2: Repository-Informationen finden
|
|
|
|
**Repository Owner:**
|
|
- Gehe zu deinem Repository: `https://git.michaelschiemer.de/[username]/michaelschiemer`
|
|
- Der erste Teil nach `/` ist der Owner (Username oder Org-Name)
|
|
|
|
**Repository Name:**
|
|
- Der zweite Teil ist der Repository-Name (meist `michaelschiemer`)
|
|
|
|
### Schritt 3: Setup-Script ausführen
|
|
|
|
```bash
|
|
cd /home/michael/dev/michaelschiemer
|
|
|
|
# Konfiguriere die Variablen
|
|
export GITEA_URL="https://git.michaelschiemer.de"
|
|
export GITEA_TOKEN="dein-token-hier"
|
|
export REPO_OWNER="dein-username"
|
|
export REPO_NAME="michaelschiemer"
|
|
export REGISTRY_PASSWORD="registry-secure-password-2025"
|
|
|
|
# Führe das Script aus
|
|
bash scripts/setup-gitea-secrets.sh
|
|
```
|
|
|
|
Das Script setzt automatisch:
|
|
- `REGISTRY_USER` = `admin`
|
|
- `REGISTRY_PASSWORD` = Wert von `$REGISTRY_PASSWORD`
|
|
- `SSH_PRIVATE_KEY` = aus `~/.ssh/production`
|
|
|
|
### Schritt 4: Verifizierung
|
|
|
|
Nach dem Ausführen des Scripts:
|
|
|
|
1. **Prüfe ob Secrets gesetzt wurden:**
|
|
```bash
|
|
# Teste mit einem Workflow
|
|
# Gehe zu: Repository → Actions → Test Registry Credentials → Run workflow
|
|
```
|
|
|
|
2. **Oder prüfe via API:**
|
|
```bash
|
|
curl -H "Authorization: token ${GITEA_TOKEN}" \
|
|
"${GITEA_URL}/api/v1/repos/${REPO_OWNER}/${REPO_NAME}/actions/secrets"
|
|
```
|
|
|
|
## 🔐 Alternative: Secrets in Runner Environment
|
|
|
|
Falls Repository Secrets gar nicht funktionieren, können Secrets auch als Environment-Variablen im Runner konfiguriert werden:
|
|
|
|
### Schritt 1: .env Datei erstellen
|
|
|
|
```bash
|
|
cd deployment/gitea-runner
|
|
cp .env.example .env
|
|
```
|
|
|
|
### Schritt 2: Secrets zur .env hinzufügen
|
|
|
|
```bash
|
|
nano .env
|
|
```
|
|
|
|
Füge hinzu:
|
|
```bash
|
|
REGISTRY_USER=admin
|
|
REGISTRY_PASSWORD=registry-secure-password-2025
|
|
# SSH_PRIVATE_KEY würde hier nicht gesetzt werden (zu lang)
|
|
```
|
|
|
|
### Schritt 3: docker-compose.yml anpassen
|
|
|
|
```yaml
|
|
services:
|
|
gitea-runner:
|
|
environment:
|
|
- REGISTRY_USER=${REGISTRY_USER:-admin}
|
|
- REGISTRY_PASSWORD=${REGISTRY_PASSWORD}
|
|
# ... rest of config
|
|
```
|
|
|
|
### Schritt 4: Workflow anpassen
|
|
|
|
Im Workflow müssen Secrets dann anders geladen werden:
|
|
|
|
```yaml
|
|
- name: Login to Registry
|
|
env:
|
|
REGISTRY_USER: ${REGISTRY_USER}
|
|
REGISTRY_PASSWORD: ${REGISTRY_PASSWORD}
|
|
run: |
|
|
# Secrets werden jetzt aus Runner Environment geladen
|
|
```
|
|
|
|
⚠️ **Nachteil:** Secrets sind dann im Runner-Environment und nicht repository-spezifisch.
|
|
|
|
## 🧪 Test ob Secrets funktionieren
|
|
|
|
### Test 1: Workflow ausführen
|
|
|
|
```bash
|
|
# Gehe zu: Repository → Actions → Test Registry Credentials → Run workflow
|
|
```
|
|
|
|
### Test 2: Debug-Output im Workflow
|
|
|
|
Füge temporär Debug-Output hinzu:
|
|
|
|
```yaml
|
|
- name: Debug Secrets
|
|
run: |
|
|
echo "REGISTRY_USER length: ${#REGISTRY_USER}"
|
|
echo "REGISTRY_PASSWORD length: ${#REGISTRY_PASSWORD}"
|
|
# Zeigt die Länge, nicht den Inhalt (für Sicherheit)
|
|
```
|
|
|
|
Wenn beide > 0 sind, funktionieren die Secrets.
|
|
|
|
### Test 3: Lokales Test-Script
|
|
|
|
```bash
|
|
export REGISTRY_USER="admin"
|
|
export REGISTRY_PASSWORD="registry-secure-password-2025"
|
|
./scripts/test-registry-credentials.sh
|
|
```
|
|
|
|
## 📚 Nützliche Links
|
|
|
|
- **Gitea Actions Docs:** https://docs.gitea.io/en-us/actions/
|
|
- **Secrets API:** https://docs.gitea.io/en-us/api-usage/#repository-secrets
|
|
- **Setup Script:** `scripts/setup-gitea-secrets.sh`
|
|
|
|
## ❓ Häufige Fragen
|
|
|
|
### Q: Warum sehe ich keine "Secrets" Option?
|
|
|
|
**A:** Mögliche Gründe:
|
|
1. Gitea Actions ist nicht aktiviert
|
|
2. Du hast nicht die nötigen Berechtigungen (Repository Owner/Admin)
|
|
3. Deine Gitea-Version hat Secrets an einem anderen Ort
|
|
4. Secrets müssen via API gesetzt werden
|
|
|
|
### Q: Kann ich Secrets für mehrere Repositories setzen?
|
|
|
|
**A:** Ja, über:
|
|
- **Organization Secrets:** Für alle Repos in der Organisation
|
|
- **API:** Script mehrmals ausführen mit verschiedenen `REPO_NAME`
|
|
|
|
### Q: Sind Secrets verschlüsselt?
|
|
|
|
**A:** Ja, Gitea verschlüsselt Secrets vor der Speicherung.
|
|
|
|
### Q: Wie ändere ich ein Secret?
|
|
|
|
**A:**
|
|
- Via UI: Bearbeiten (falls verfügbar)
|
|
- Via API: Script erneut ausführen (überschreibt das Secret)
|
|
- Via Script: `setup-gitea-secrets.sh` erneut ausführen
|
|
|
|
## 🚀 Quick Start
|
|
|
|
**Schnellste Methode (wenn API verfügbar):**
|
|
|
|
```bash
|
|
export GITEA_URL="https://git.michaelschiemer.de"
|
|
export GITEA_TOKEN="dein-token"
|
|
export REPO_OWNER="dein-username"
|
|
export REPO_NAME="michaelschiemer"
|
|
export REGISTRY_PASSWORD="registry-secure-password-2025"
|
|
|
|
bash scripts/setup-gitea-secrets.sh
|
|
```
|
|
|
|
Das war's! Secrets sollten jetzt funktionieren.
|