4.8 KiB
4.8 KiB
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
# In Gitea einloggen und unter /admin prüfen
# Oder via SSH auf dem Server:
gitea --version
2. Act Runner installieren
Download und Installation
# 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
- Gehe in Gitea zu:
https://git.coded.law/admin/actions/runners - Klicke auf "Neuen Runner hinzufügen"
- Kopiere den Token (z.B.
GITEA_RUNNER_TOKEN=abc123...)
# 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:
[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:
# 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
# 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
- Gehe zu:
https://git.coded.law/username/lawgit/actions - Klicke auf "Update Laws from RSS"
- Klicke auf "Run workflow" (workflow_dispatch)
- Prüfe die Logs
4. Workflow-Datei
Die Workflow-Datei befindet sich in: .gitea/workflows/update-laws.yaml
Sie führt folgende Schritte aus:
- Repository auschecken
- Python 3.11 einrichten
- Dependencies installieren (
requirements.txt) update_laws.pyausführen (lädt neue Gesetze)xml_to_markdown.py --prodausführen (konvertiert zu Markdown)- Änderungen committen und pushen
5. Fehlerbehandlung
Runner startet nicht
# 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
- Prüfe die Workflow-Logs in Gitea
- Prüfe ob Python-Dependencies installiert sind
- Prüfe ob
update_laws.pyundxml_to_markdown.pyim Repo sind - Prüfe Git-Berechtigungen (Runner braucht Push-Rechte)
Rate-Limits
Falls Downloads fehlschlagen, füge Delays hinzu:
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
# 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:
schedule:
- cron: '0 2 * * *' # Täglich um 02:00 UTC
Cron-Format: Minute Stunde Tag Monat Wochentag
Andere Trigger
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 (
mainvsmaster)