Läufer erkunden

Abgeschlossen

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:

  1. Herunterladen der Runner-Anwendung aus dem GitHub-Runner-Repository
  2. Konfigurieren Sie den Runner mit Authentifizierungstoken
  3. Als Dienst installieren (empfohlen für die Produktionsumgebung)
  4. 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