Files
lawgit/GITEA_ACTIONS_SETUP.md

222 lines
4.8 KiB
Markdown

# Gitea Actions Runner Einrichtung
Diese Anleitung erklärt, wie du den Gitea Actions Runner für automatische Gesetzes-Updates einrichtest.
## Voraussetzungen
- Gitea-Version >= 1.19 (Actions-Unterstützung)
- SSH-Zugriff auf den Strato V-Server
- Root-Rechte für Service-Setup
- Python 3.11+ auf dem Runner-System
## 1. Gitea-Version prüfen
```bash
# In Gitea einloggen und unter /admin prüfen
# Oder via SSH auf dem Server:
gitea --version
```
## 2. Act Runner installieren
### Download und Installation
```bash
# Aktuelle Version von https://gitea.com/gitea/act_runner/releases herunterladen
cd /opt # oder ein anderes Verzeichnis deiner Wahl
wget -O act_runner https://gitea.com/gitea/act_runner/releases/download/v0.2.11/act_runner-0.2.11-linux-amd64
chmod +x act_runner
# Architektur prüfen (falls nicht amd64):
# uname -m # zeigt Architektur (x86_64, arm64, etc.)
```
### Runner registrieren
1. Gehe in Gitea zu: `https://git.coded.law/admin/actions/runners`
2. Klicke auf "Neuen Runner hinzufügen"
3. Kopiere den Token (z.B. `GITEA_RUNNER_TOKEN=abc123...`)
```bash
# Runner registrieren
./act_runner register \
--instance https://git.coded.law \
--token $GITEA_RUNNER_TOKEN \
--name lawgit-runner \
--labels ubuntu-latest:docker://node:20-bullseye
# Labels anpassen:
# ubuntu-latest:docker://node:20-bullseye # Für Docker-basierte Runner
# ubuntu-latest # Für native Runner
```
### Systemd-Service einrichten
Erstelle `/etc/systemd/system/act-runner.service`:
```ini
[Unit]
Description=Gitea Act Runner
After=network.target
[Service]
Type=simple
ExecStart=/opt/act_runner daemon
WorkingDirectory=/opt
User=git # Oder ein dedizierter User (nicht root!)
Restart=always
RestartSec=5
# Umgebungsvariablen (optional)
Environment="GITEA_RUNNER_NAME=lawgit-runner"
[Install]
WantedBy=multi-user.target
```
**Wichtig**: Erstelle einen dedizierten User statt root zu verwenden:
```bash
# User erstellen
sudo useradd -m -s /bin/bash gitea-runner
sudo mkdir -p /opt
sudo chown gitea-runner:gitea-runner /opt/act_runner
# Service aktivieren
sudo systemctl daemon-reload
sudo systemctl start act-runner
sudo systemctl enable act-runner
```
### Status prüfen
```bash
# Service-Status
sudo systemctl status act-runner
# Logs anzeigen
sudo journalctl -u act-runner -f
# Runner in Gitea prüfen
# Gehe zu: https://git.coded.law/admin/actions/runners
```
## 3. Workflow testen
1. Gehe zu: `https://git.coded.law/username/lawgit/actions`
2. Klicke auf "Update Laws from RSS"
3. Klicke auf "Run workflow" (workflow_dispatch)
4. Prüfe die Logs
## 4. Workflow-Datei
Die Workflow-Datei befindet sich in: `.gitea/workflows/update-laws.yaml`
Sie führt folgende Schritte aus:
1. Repository auschecken
2. Python 3.11 einrichten
3. Dependencies installieren (`requirements.txt`)
4. `update_laws.py` ausführen (lädt neue Gesetze)
5. `xml_to_markdown.py --prod` ausführen (konvertiert zu Markdown)
6. Änderungen committen und pushen
## 5. Fehlerbehandlung
### Runner startet nicht
```bash
# Logs prüfen
sudo journalctl -u act-runner -n 50
# Berechtigungen prüfen
ls -la /opt/act_runner
sudo chmod +x /opt/act_runner
```
### Workflow schlägt fehl
1. Prüfe die Workflow-Logs in Gitea
2. Prüfe ob Python-Dependencies installiert sind
3. Prüfe ob `update_laws.py` und `xml_to_markdown.py` im Repo sind
4. Prüfe Git-Berechtigungen (Runner braucht Push-Rechte)
### Rate-Limits
Falls Downloads fehlschlagen, füge Delays hinzu:
```python
import time
time.sleep(1) # Zwischen Downloads
```
## 6. Sicherheit
- **Nicht als root laufen**: Erstelle einen dedizierten User
- **HTTPS**: Stelle sicher, dass Gitea über HTTPS läuft
- **Firewall**: Beschränke Zugriff auf Runner-Ports falls nötig
- **Secrets**: Verwende Gitea Secrets für sensible Daten
## 7. Monitoring
### Logs überwachen
```bash
# Systemd-Logs
sudo journalctl -u act-runner -f
# Gitea-Logs
tail -f /var/lib/gitea/log/gitea.log
```
### Workflow-Historie
- Gitea UI: `https://git.coded.law/username/lawgit/actions`
- Zeigt alle Workflow-Ausführungen und deren Status
## 8. Anpassungen
### Cron-Zeit ändern
Bearbeite `.gitea/workflows/update-laws.yaml`:
```yaml
schedule:
- cron: '0 2 * * *' # Täglich um 02:00 UTC
```
Cron-Format: `Minute Stunde Tag Monat Wochentag`
### Andere Trigger
```yaml
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
schedule:
- cron: '0 2 * * *'
```
## Troubleshooting
### Runner erscheint nicht in Gitea
- Prüfe ob Token korrekt ist
- Prüfe Netzwerkverbindung zwischen Runner und Gitea
- Prüfe Firewall-Regeln
### Workflow wird nicht ausgeführt
- Prüfe ob Workflow-Datei im richtigen Branch ist
- Prüfe Cron-Syntax
- Prüfe Runner-Labels (müssen mit `runs-on` übereinstimmen)
### Git-Push schlägt fehl
- Prüfe ob Runner Git-Berechtigungen hat
- Prüfe ob Remote korrekt konfiguriert ist
- Prüfe ob Branch-Name korrekt ist (`main` vs `master`)