222 lines
4.8 KiB
Markdown
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`)
|
|
|
|
|