Läufer erkunden
GitHub-Runner sind die Computeumgebungen, in denen Ihre GitHub-Aktionen-Workflows ausgeführt werden. Das Verständnis von Läufern ist entscheidend für die Leistungsoptimierung, die Kostenverwaltung und die Gewährleistung der Sicherheit in Ihren CI/CD-Pipelines.
Übersicht über Runner-Typen
GitHub bietet zwei unterschiedliche Läuferoptionen, die jeweils für unterschiedliche Szenarien geeignet sind:
Von GitHub gehostete Runner
- Verwaltet von GitHub: Vollständig verwaltet und aktualisiert von GitHub
- On-Demand-Skalierung: Automatisch für jeden Auftrag bereitgestellt
- Mehrere Umgebungen: Ubuntu, Windows und macOS verfügbar
- Integrierte Tools: Vorinstalliert mit allgemeinen Entwicklungstools
- Nutzungsbasierte Abrechnung: Bezahlen Sie nur für ihre Nutzung
Selbstgehosteten Runnern
- Verwaltet von Ihnen: Vollzugriff auf die Umgebung und Konfiguration
- Benutzerdefinierte Umgebungen: Installieren sie alle erforderlichen Software- oder Hardwarekonfigurationen.
- Private Infrastruktur: Wird auf Ihren eigenen Computern oder Cloudinstanzen ausgeführt
- Keine Zeitlimits: Aufträge können so lange wie nötig ausgeführt werden
- Fixkosten: Keine Kosten pro Minute nach der Einrichtung
Sicherheitsüberlegungen
Von Bedeutung
Verwenden Sie nie selbstgehostete Runner mit öffentlichen Repositories. Dadurch entsteht ein schwerwiegender Sicherheitsrisiko, in dem böswillige Akteure Code in Ihrer Infrastruktur über Pull-Anforderungen ausführen können.
Sichere Verwendungsmuster:
- Verwenden Sie selbst gehostete Runner nur mit privaten Repositories.
- Implementieren der richtigen Netzwerkisolation und -überwachung
- Regelmäßiges Aktualisieren von Runner-Software und Abhängigkeiten
- Verwenden von dedizierten Computern, die keine vertraulichen Daten enthalten
Von GitHub gehostete Runner
GitHub-gehostete Runner bieten eine wartungsfreie Lösung zum Ausführen Ihrer Workflows. GitHub behandelt alle Infrastrukturverwaltungen, sodass Sie sich nicht auf die Serververwaltung, sondern auf Ihren Code konzentrieren können.
Verfügbare Umgebungen
GitHub bietet mehrere Läufertypen mit unterschiedlichen Spezifikationen:
| Läuferart | Betriebssystemversion | Prozessor | RAM | Storage |
|---|---|---|---|---|
ubuntu-latest |
Ubuntu 22.04 | 4-Kern-Prozessor | 16 GB | 14 GB SSD |
windows-latest |
Windows Server 2022 | 4-Core CPU | 16 GB | 14 GB SSD |
macos-latest |
macOS 14 | 4-Kern-CPU | 14 GB | 14 GB SSD |
macos-13 |
macOS 13 | 4-Kern-CPU | 14 GB | 14 GB SSD |
Vorinstallierte Software
Jeder Läufer verfügt über einen umfassenden Satz von Entwicklungstools:
Allgemeine Tools auf allen Plattformen:
- Git, Docker, Node.js, Python, Java, .NET
- Paketmanager (npm, pip, Maven, NuGet)
- Erstellen von Tools und Compilern
- Testen von Frameworks
Plattformspezifische Tools:
-
Ubuntu:
apt, ,snapverschiedene Linux-Dienstprogramme - Windows: PowerShell, Visual Studio Build Tools, Windows SDK
- macOS: Xcode, Homebrew, CocoaPods
Tipp
Überprüfen Sie den gesamten Softwarebestand im Runner-Images-Repository oder betrachten Sie den Abschnitt "Job einrichten" in Ihren Workflowprotokollen.
Nutzungsgrenzwerte und Überlegungen
Wenn Sie diese Grenzwerte verstehen, können Sie Ihre Workflows effektiv planen:
- Auftragstimeout: maximal 6 Stunden pro Auftrag
- Workflowtimeout: maximal 35 Tage (einschließlich Wartezeit)
- Gleichzeitige Aufträge: Variiert je nach GitHub-Plan (20 kostenlos, 180 für Pro)
- Speicher: 500 MB Artefaktspeicher pro Auftrag
Voraussetzungen
Bevor Sie gitHub-gehostete Runner verwenden, müssen Benutzer über ein GitHub-Repository verfügen, in dem sie Workflows mithilfe von GitHub-Aktionen definieren können. Runners sind für alle GitHub-Benutzer mit Zugriff auf GitHub-Aktionen verfügbar.
Konfiguration
Im Gegensatz zu selbst gehosteten Runnern werden von GitHub gehostete Runner automatisch im Rahmen einer einzelnen Workflow-Ausführung eingerichtet. Benutzer definieren Workflows als YAML-formatierte Dateien, die im GitHub/Workflows-Verzeichnis in GitHub-Repositorys gespeichert sind. Innerhalb der Workflowkonfiguration geben Benutzer die gewünschte Runner-Umgebung an, einschließlich des Betriebssystems und der Softwareabhängigkeiten. Runner mit passenden Spezifikationen werden bedarfsbasiert eingerichtet, wenn ein Workflow ausgelöst wird, mit einem Runner pro Auftrag. Trigger können manuell oder automatisch sein, basierend auf Ereignissen wie Code-Pushes, Pullanforderungen oder Repository-Dispatch-Ereignissen.
Von GitHub gehostete Läufer authentifizieren sich bei GitHub mithilfe von Token oder Anmeldeinformationen, die von GitHub Actions bereitgestellt werden. Sie verlassen sich auf integrierte Konnektivität, um mit der GitHub-Plattform zu kommunizieren und Workflowartefakte herunterzuladen.
Instandhaltung
GitHub verwaltet Updates von durch GitHub gehosteten Runnern und wartet diese, um sicherzustellen, dass sie hinsichtlich der neuesten Softwareversionen und Sicherheitspatches auf dem neuesten Stand sind. Die in den Runnern enthaltenen Softwaretools werden wöchentlich aktualisiert. Runner-Aktivitäten werden überwacht und protokolliert, wodurch das Nachverfolgen von Workflowausführungen und die Problembehandlung erleichtert wird.
Lizenzierung und Kosten
Von GitHub gehostete Runner sind im Preis für GitHub Actions enthalten. Wenn die im kostenlosen Tarif enthaltenen Freiminuten aufgebraucht sind, werden weitere Workflowminuten nutzungsbasiert abgerechnet. Benutzer profitieren von der automatisierten und kosteneffizienten Skalierung, da GitHub Runner basierend auf Bedarf automatisch bereitstellt und freigibt.
Selbstgehosteten Runnern
Runner mit Selbst-Hosting geben Ihnen die vollständige Kontrolle über Ihre Ausführungsumgebung. Sie sind ideal, wenn Sie bestimmte Hardware-, Softwarekonfigurationen benötigen oder kostenintensive Workflows reduzieren möchten.
Wann man selbstgehostete Runner verwenden sollte
Perfekt für:
- Spezifische Hardwareanforderungen: GPU-Beschleunigung, hoher Arbeitsspeicher oder benutzerdefinierte Prozessoren
- Zugriff auf private Netzwerke: Herstellen einer Verbindung mit internen Datenbanken, APIs oder Diensten
- Benutzerdefinierte Software: Vorinstallierte proprietäre Tools oder bestimmte Softwareversionen
- Kostenoptimierung: Volumenworkflows, bei denen die Abrechnung pro Minute teuer wird
- Complianceanforderungen: Daten müssen in Ihrer Infrastruktur bleiben
Nicht empfohlen für:
- Öffentliche Repositorys (Sicherheitsrisiko)
- Gelegentliche oder volumenarme Workflows
- Teams ohne Infrastrukturverwaltungserfahrung
Bereitstellungsoptionen
Sie können selbst gehostete Runner auf verschiedenen Plattformen ausführen:
- Physische Server: Lokale Hardware
- Virtuelle Computer: VMware, Hyper-V oder andere Hypervisoren
- Cloudinstanzen: AWS EC2, Azure VMs, Google Compute Engine
- Container: Docker-Container (mit Einschränkungen)
- Kubernetes: Verwenden des Actions Runner Controllers
Setupprozess
Das Einrichten eines selbst gehosteten Läufers umfasst die folgenden wichtigen Schritte:
- Herunterladen der Runner-Anwendung aus dem GitHub-Runner-Repository
- Konfigurieren Sie den Runner mit Authentifizierungstoken
- Als Dienst installieren (empfohlen für die Produktionsumgebung)
- Konfigurieren von Labels für bestimmte Runner in Workflows
Netzwerkanforderungen:
- Ausgehender HTTPS-Zugriff (443) auf GitHub.com
- Ausgehender HTTPS-Zugriff (443) auf objects.githubusercontent.com
- Keine eingehenden Verbindungen erforderlich
Runner-Kontexte und -Management
Selbst gehostete Läufer können auf unterschiedlichen Organisationsebenen registriert werden:
| Geltungsbereich | Zugriffsebene | Anwendungsfall |
|---|---|---|
| Repository | Nur einzelnes Repository | Entwicklungs-/Testumgebungen |
| Organisation | Alle Repositorys in der Organisation | Freigegebene Teamressourcen |
| Unternehmen | Alle Organisationen im Unternehmen | Zentrale Infrastrukturverwaltung |
Ausrichten von Läufern in Workflows
Verwenden Sie Bezeichnungen, um anzugeben, welcher Läufer Ihren Auftrag ausführen soll:
jobs:
build:
runs-on: [self-hosted, linux, x64, gpu]
steps:
- name: Build with GPU acceleration
run: ./build-with-cuda.sh
Wartungsaufgaben
Als Läuferbesitzer sind Sie dafür verantwortlich:
- Sicherheitsupdates: Halten Sie die Läuferanwendung und das Betriebssystem auf dem neuesten Stand
- Softwareverwaltung: Installieren und Verwalten erforderlicher Entwicklungstools
- Überwachung: Verfolgen der Gesundheits- und Leistungsmetriken von Läufern
- Kapazitätsplanung: Skalierungsläufer basierend auf Workflowanforderungen
- Sicherung und Wiederherstellung: Sicherstellung, dass Runner-Konfigurationen gesichert werden
Kostenaspekte
Während selbst gehostete Runner keine Kosten für GitHub-Aktionen verursachen, sollten Sie folgende Kosten berücksichtigen:
- Infrastruktur: Server, Cloudinstanzen oder Container-Orchestrierung
- Wartung: Zeitaufwand für Updates, Überwachung und Problembehandlung
- Sicherheit: Zusätzliche Tools und Prozesse für sicheres Läufermanagement
- Energie und Kühlung: Für lokale Bereitstellungen
Tipps zur Kostenoptimierung:
- Verwenden der automatischen Skalierung für cloudbasierte Läufer
- Runner-Pooling für mehrere Repositorys implementieren
- Planen von Läufern, die während der Auslaufzeit heruntergefahren werden sollen
- Überwachen der Ressourcenauslastung, um Instanzen optimal zu dimensionieren