Add Gitea Actions setup documentation and update .gitignore for CI/CD scripts
This commit is contained in:
221
GITEA_ACTIONS_SETUP.md
Normal file
221
GITEA_ACTIONS_SETUP.md
Normal file
@@ -0,0 +1,221 @@
|
||||
# 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`)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user