Forgejo Runner #
Ein Forgejo Runner ist ein Daemon, der mit einer Forgejo-Instanz zusammenarbeitet, um CI/CD (Continuous Integration/Continuous Delivery)-Jobs auszuführen. Er ruft Workflows von der Forgejo-Instanz ab, führt sie in einer isolierten Umgebung aus und sendet dann Protokolle und den endgültigen Status zurück.
Deployment #
Quelle #
Die Bereitstellung verwendet ein benutzerdefiniertes Helm-Chart aus einem privaten Repository.
Dokumentation #
Die Dokumentation für den Runner ist Teil der Forgejo-Dokumentation.
Funktion #
Dieser Dienst stellt Runner für die Ausführung von CI/CD-Pipelines bereit. Es sind zwei Instanzen konfiguriert: eine für die lokale Forgejo-Instanz und eine weitere für Codeberg.
Lokale Anpassungen #
- Die
values.yaml-Datei enthält die Konfiguration für die Haupt-Runner-Instanz, einschließlich der Verbindung zur Forgejo-Instanz und der Runner-Labels. - Die
values-codeberg.yaml-Datei enthält die Konfiguration für die Codeberg-Runner-Instanz. - Beide Instanzen verwenden Docker-in-Docker (DinD) für die Ausführung von Jobs.
Wichtige Einstellungen #
- Instanzen: Es werden zwei Runner-Deployments erstellt:
forgejo-runner: Verbindet sich mit der lokalen Instanz.forgejo-runner-codeberg: Verbindet sich mit der öffentlichen Instanzhttps://codeberg.org.
- Replikas: Für die lokale Instanz werden 3 Runner-Replikate betrieben, um parallele Job-Ausführung zu ermöglichen.
- Node Selector: Die Runner werden auf Nodes mit dem Label
performance: highausgeführt, um eine schnelle Job-Ausführung zu gewährleisten. - Labels: Die Runner sind mit einer Vielzahl von Labels konfiguriert, die auf verschiedene Docker-Images von
catthehacker/ubuntuverweisen. Diese Images sind speziell für die Verwendung mit Gitea/Forgejo Actions vorbereitet. - Docker-in-Docker: Die Runner laufen im
privileged-Modus und mithost-Netzwerk, um Docker-Befehle innerhalb der CI-Jobs ausführen zu können (Docker-in-Docker).
Installation #
Der Dienst wird als Helm-Chart aus einem privaten Repository bereitgestellt. Die Bereitstellung wird durch die kustomization.yaml-Datei verwaltet.
1kubectl kustomize --enable-helm apps/forgejo-runner | kubectl apply -n forgejo-runner -f -
Abhängigkeiten #
- Forgejo: Eine laufende Forgejo-Instanz, bei der sich die Runner registrieren können.
- Docker: Auf den Kubernetes-Worker-Nodes, auf denen die Runner laufen, muss eine Docker-Engine verfügbar sein, damit die Runner Docker-Container für die Jobs starten können.