diff --git a/Readme.md b/Readme.md index a9725d3..890d36d 100644 --- a/Readme.md +++ b/Readme.md @@ -561,8 +561,7 @@ entsteht daraus ein reguläres Release mit derselben Mechanik. > verwenden, der genau diese Pfade schützt. Voraussetzung ist ein registrierter **Forgejo-Actions-Runner**; ohne Runner -bleiben die Workflows in der Warteschlange stehen. Compose-Datei und Anleitung -dafür liegen in [`tools/runner/`](tools/runner/README.md). +bleiben die Workflows in der Warteschlange stehen. ### Mitwirken diff --git a/tools/README.md b/tools/README.md index f3f431f..b3ece02 100644 --- a/tools/README.md +++ b/tools/README.md @@ -38,11 +38,5 @@ php -S 127.0.0.1:8123 -t /tmp/uvt-demo & CHROME_BIN=/usr/bin/chromium python3 tools/screenshots.py ``` -## Actions-Runner (`tools/runner/`) - -Compose-Datei und Anleitung, um einen Forgejo-Actions-Runner einzurichten. -Ohne Runner bleiben `ci.yml` und `release.yml` in der Warteschlange stehen. -Details: [`tools/runner/README.md`](runner/README.md). - Die Skripte sind Hilfsmittel für die Entwicklung – im Betrieb werden sie nicht benötigt und sind per `.htaccess` nicht über HTTP erreichbar. diff --git a/tools/runner/README.md b/tools/runner/README.md deleted file mode 100644 index 23a4b95..0000000 --- a/tools/runner/README.md +++ /dev/null @@ -1,98 +0,0 @@ -# Forgejo-Actions-Runner einrichten - -Ohne registrierten Runner bleiben die Workflows (`ci.yml`, `release.yml`) in der -Warteschlange stehen – Forgejo nimmt sie an, es holt sie nur niemand ab. - -Die folgenden Schritte laufen **als root auf dem Server** und legen den Runner in -einem eigenen Verzeichnis an. `/opt/forgejo` und die dortigen Container bleiben -dabei unberührt. - -## 1. Verzeichnis anlegen - -```bash -mkdir -p /opt/forgejo-runner/data -cd /opt/forgejo-runner -# docker-compose.yml und config.example.yml aus tools/runner/ hierher kopieren -``` - -## 2. Registrierungs-Token holen - -Entweder in der Weboberfläche unter -**Repository → Einstellungen → Actions → Runner → „Runner erstellen"**, -oder über die API (Token mit Repo-Rechten vorausgesetzt): - -```bash -curl -s -X POST -H "Authorization: token $FORGEJO_TOKEN" \ - https://git.loheide.cloud/api/v1/repos/friloo/Unifi-Voucher-Tool/actions/runners/registration-token -``` - -Soll der Runner für **alle** Repositories zuständig sein, stattdessen -`…/api/v1/admin/runners/registration-token` verwenden. - -> Das Token ist kurzlebig und wird nur einmal beim Registrieren gebraucht. - -## 3. Registrieren - -```bash -docker compose run --rm runner forgejo-runner register --no-interactive \ - --instance https://git.loheide.cloud \ - --token "" \ - --name "$(hostname)-runner" \ - --labels 'ubuntu-latest:docker://node:20-bookworm,ubuntu-22.04:docker://node:20-bookworm' -``` - -Die Label-Zuordnung ist wichtig: die Workflows verwenden `runs-on: ubuntu-latest`, -und dieses Label zeigt hier auf das Image `node:20-bookworm`. Darin sind Node -(für `actions/checkout`), Git, curl und unzip bereits enthalten. - -## 4. Konfiguration erzeugen und anpassen - -```bash -docker compose run --rm runner forgejo-runner generate-config > data/config.yml -``` - -Anschließend mindestens diese Werte setzen (Vorlage: `config.example.yml`): - -| Wert | Empfehlung | Grund | -|---|---|---| -| `runner.capacity` | `1` | der Server hat 4 GB RAM | -| `runner.timeout` | `30m` | die Jobs hier dauern wenige Minuten | -| `container.force_pull` | `false` | spart Bandbreite und Plattenplatz | -| `cache.enabled` | `true` | beschleunigt `composer install` | - -## 5. Starten - -```bash -docker compose up -d -docker compose logs -f # sollte "Runner registered successfully" zeigen -``` - -Danach erscheint der Runner unter **Repository → Einstellungen → Actions → Runner** -als „idle", und der nächste Push auf `main` baut das Release-ZIP. - -## Was der Runner darf – bitte bewusst entscheiden - -Der Runner bekommt den **Docker-Socket des Hosts** gereicht. Damit kann jeder -Workflow, der auf diesem Runner läuft, Container mit Root-Rechten starten – das -entspricht faktisch Root auf dem Server. Für ein privates Repository, in dem nur -eigene Workflows laufen, ist das üblich und vertretbar. Sobald Fremde Pull -Requests öffnen können, sollte der Runner stattdessen auf einer separaten -Maschine oder in einer VM laufen. - -Alternative ohne Docker-Socket: Runner im **Host-Modus** (`ubuntu-latest:host`). -Dann laufen die Jobs direkt auf dem Server, ohne Container – dafür müssen Node, -Git und PHP dort installiert sein, und die Jobs sehen das Dateisystem des Hosts. -Für `release.yml` würde das reichen, für `ci.yml` (PHP 7.4 **und** 8.2 über -`shivammathur/setup-php`) nicht. - -## Speicherbedarf im Blick behalten - -`node:20-bookworm` belegt rund 1 GB auf der Platte, die Job-Container brauchen -kurzzeitig einige hundert MB RAM. Bei 4 GB Gesamtspeicher sollte neben Forgejo, -Caddy und der Datenbank nur **ein** Job gleichzeitig laufen (`capacity: 1`). -Aufräumen gelegentlich mit: - -```bash -docker image prune -f -docker builder prune -f -``` diff --git a/tools/runner/config.example.yml b/tools/runner/config.example.yml deleted file mode 100644 index 53cc686..0000000 --- a/tools/runner/config.example.yml +++ /dev/null @@ -1,27 +0,0 @@ -# Auszug aus `forgejo-runner generate-config` mit den Anpassungen, die auf -# einem kleinen Server sinnvoll sind. Vollständige Vorlage erzeugen mit: -# docker compose run --rm runner forgejo-runner generate-config > data/config.yml - -log: - level: info - -runner: - file: .runner - # Nur ein Job gleichzeitig – der Server hat 4 GB RAM. - capacity: 1 - timeout: 30m - # Labels bestimmen, welches Image ein `runs-on:` bekommt. - labels: - - "ubuntu-latest:docker://node:20-bookworm" - - "ubuntu-22.04:docker://node:20-bookworm" - -cache: - enabled: true - dir: "/data/cache" - -container: - network: "bridge" - privileged: false - # Images nur ziehen, wenn sie fehlen – spart Bandbreite und Platz. - force_pull: false - valid_volumes: [] diff --git a/tools/runner/docker-compose.yml b/tools/runner/docker-compose.yml deleted file mode 100644 index 7bcfecb..0000000 --- a/tools/runner/docker-compose.yml +++ /dev/null @@ -1,30 +0,0 @@ -# Forgejo-Actions-Runner für dieses Repository. -# -# Bewusst eigenständig: der Runner läuft in einem eigenen Verzeichnis und -# fasst weder /opt/forgejo noch die dortigen Container an. -# -# Einrichtung siehe README.md in diesem Ordner. - -services: - runner: - image: data.forgejo.org/forgejo/runner:13.2.0 - container_name: forgejo-runner - restart: unless-stopped - # Der Runner startet die Job-Container über den Docker-Socket des Hosts. - user: root - working_dir: /data - volumes: - - ./data:/data - - /var/run/docker.sock:/var/run/docker.sock - environment: - DOCKER_HOST: unix:///var/run/docker.sock - TZ: Europe/Berlin - command: forgejo-runner daemon --config /data/config.yml - # Der Server hat 4 GB – der Runner selbst soll davon wenig belegen. - # Die Job-Container laufen daneben, nicht innerhalb dieses Limits. - mem_limit: 512m - logging: - driver: json-file - options: - max-size: "10m" - max-file: "3"