Skip to main content
Wir veröffentlichen regelmäßig Aktualisierungen unserer Dokumentation, und die Übersetzung dieser Seite ist möglicherweise noch nicht abgeschlossen. Aktuelle Informationen findest du in der englischsprachigen Dokumentation.

Verwenden selbstgehosteten Runnern in einem Workflow

Um selbstgehostete Runner in einem Workflow zu verwenden, kannst du Bezeichnungen oder Gruppen verwenden, um den Runner für einen Auftrag anzugeben.

Du kannst selbstgehostete Runner für die Verwendung in einem Workflow basierend auf den Bezeichnungen, die den Runnern oder ihrer Gruppenmitgliedschaft oder einer Kombination aus beiden zugewiesen sind, als Ziel verwenden.

Informationen zu Bezeichnungen für selbstgehostete Runner

Mithilfe von Bezeichnungen kannst du Workflowaufträge entsprechend ihrer gemeinsamen Merkmale an bestimmte Typen von selbstgehosteten Runnern senden. Wenn dein Auftrag beispielsweise eine bestimmte Hardwarekomponente oder ein bestimmtes Softwarepaket benötigt, kannst du einem Runner eine benutzerdefiniertes Bezeichnung zuweisen und dann deinen Auftrag so konfigurieren, dass er nur auf Runnern mit dieser Bezeichnung ausgeführt wird.

Um einen selbstgehosteten Runner für deinen Auftrag anzugeben, konfiguriere runs-on in deiner Workflowdatei mit Bezeichnungen selbstgehosteter Runner.

Alle selbstgehosteten Runner weisen die Bezeichnung self-hosted auf. Wenn du nur diese Bezeichnung verwendest, werden dadurch alle selbstgehosteten Runner ausgewählt. Um Runner auszuwählen, die bestimmte Kriterien erfüllen, z. B. im Hinblick auf Betriebssystem oder Architektur, empfehlen wir die Angabe eines Arrays von Bezeichnungen, das mit self-hosted beginnt (diese Bezeichnung muss als Erstes aufgeführt werden) und dann nach Bedarf weitere Bezeichnungen einschließt. Wenn du ein Array von Bezeichnungen angibst, werden Aufträge in die Warteschlange von Runnern eingereiht, die alle von dir angegebenen Bezeichnungen aufweisen.

Die Bezeichnung self-hosted ist zwar nicht erforderlich, wird aber bei Verwendung selbstgehosteter Runner dringend empfohlen. So wird sichergestellt, dass in deinem Auftrag nicht versehentlich aktuelle oder zukünftige von GitHub gehostete Runner angegeben werden.

Informationen zum Erstellen von benutzerdefinierten und Standardbezeichnungen findest du unter Verwenden von Bezeichnungen mit selbstgehosteten Runnern.

Informationen zu selbstgehosteten Runnergruppen

Für selbstgehostete Runner, die auf Organisations- ebene definiert sind, kannst du deine Runner mit freigegebenen Merkmalen in einer einzelnen Runnergruppe gruppieren und dann deinen Auftrag so konfigurieren, dass die Runnergruppe als Ziel verwendet wird.

Um eine selbstgehostete Runnergruppe für deinen Auftrag anzugeben, konfiguriere runs-on.group in deiner Workflowdatei.

Informationen zum Erstellen und Verwalten von Runnergruppen findest du unter Verwalten des Zugriffs auf selbstgehostete Runner mithilfe von Gruppen.

Standard-Labels verwenden, um Jobs zu lenken

Ein selbst-gehosteter Runner erhält automatisch bestimmte Labels, wenn er zu GitHub Actions hinzugefügt wird. Diese werden verwendet, um das Betriebssystem und die Hardwareplattform anzuzeigen:

  • self-hosted: Standardbezeichnung, die auf alle selbstgehosteten Runner angewendet wird.
  • linux, windows oder macOS: Wird je nach Betriebssystem des Runners angewendet.
  • x64, ARModer ARM64: Wird je nach Hardwarearchitektur angewendet.

Du kannst die YAML deines Workflows verwenden, um Aufträge an eine Kombination dieser Bezeichnungen zu senden. In diesem Beispiel ist ein selbst-gehosteter Runner, der allen drei Labels entspricht, berechtigt, den Job auszuführen:

runs-on: [self-hosted, linux, ARM64]
  • self-hosted – Auftrag auf einem selbstgehosteten Runner ausführen.
  • linux – Nur Linux-basierten Runner verwenden.
  • ARM64 – Nur auf ARM64-Hardware basierenden Runner verwenden.

Die Standard-Labels sind fest und können weder geändert noch entfernt werden. Erwäge die Verwendung benutzerdefinierter Bezeichnungen, wenn du mehr Kontrolle über das Auftragsrouting benötigst.

Benutzerdefinierte Labels verwenden, um Jobs zu lenken

Du kannst jederzeit eigene Bezeichnungen erstellen und deinen selbstgehosteten Runnern zuordnen. Mit benutzerdefinierten Bezeichnungen kannst du Aufträge an bestimmte Typen von selbstgehosteten Runnern senden, je nachdem, welche Bezeichnungen sie haben.

Wenn du z. B. einen Auftrag hast, der einen bestimmten Typ von Grafikhardware erfordert, kannst du eine benutzerdefinierte Bezeichnung mit dem Namen gpu erstellen und den Runnern zuordnen, auf denen diese Hardware installiert ist. Ein selbst-gehosteter Runner, der allen zugewiesenen Labels entspricht, ist dann berechtigt, den Job auszuführen.

Dieses Beispiel zeigt einen Job, der Standard- und benutzerdefinierte Labels kombiniert:

runs-on: [self-hosted, linux, x64, gpu]
  • self-hosted – Auftrag auf einem selbstgehosteten Runner ausführen.
  • linux – Nur Linux-basierten Runner verwenden.
  • x64 – Nur auf x64-Hardware basierenden Runner verwenden.
  • gpu – Diese benutzerdefinierte Bezeichnung wurde manuell selbstgehosteten Runnern zugewiesen, auf denen die GPU-Hardware installiert ist.

Diese Bezeichnungen funktionieren kumulativ. Ein selbstgehosteter Runner muss also alle vier Bezeichnungen aufweisen, um den Auftrag verarbeiten zu können.

Verwenden von Gruppen zum Lenken von Aufträgen

In diesem Beispiel wurden Ubuntu-Runner zu einer Gruppe namens ubuntu-runners hinzugefügt. Der runs-on-Schlüssel sendet den Auftrag an einen beliebigen verfügbaren Runner in der Gruppe ubuntu-runners:

name: learn-github-actions
on: [push]
jobs:
  check-bats-version:
    runs-on: 
      group: ubuntu-runners
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v

Verwenden von Bezeichnungen und Gruppen zum Lenken von Aufträgen

Wenn du Gruppen und Bezeichnungen kombinierst, muss der Runner beide Anforderungen erfüllen, um zum Ausführen des Auftrags berechtigt zu sein.

In diesem Beispiel wird eine Runnergruppe namens ubuntu-runners mit Ubuntu-Runnern aufgefüllt, denen zudem die Bezeichnung ubuntu-20.04-16core zugewiesen wurde. Der runs-on-Schlüssel kombiniert group und labels, sodass der Auftrag an einen beliebigen verfügbaren Runner innerhalb der Gruppe weitergeleitet wird, der auch eine übereinstimmende Bezeichnung aufweist:

name: learn-github-actions
on: [push]
jobs:
  check-bats-version:
    runs-on:
      group: ubuntu-runners
      labels: ubuntu-20.04-16core
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v

Routingrangfolge für selbstgehostete Runner

Wenn du einen Auftrag an einen selbstgehosteten Runner weiterleitest, sucht GitHub nach einem Runner, der mit den runs-on-Bezeichnungen und/oder Gruppen des Auftrags übereinstimmt:

  • Wenn GitHub einen online und im Leerlauf befindlichen Runner findet, der mit den runs-on-Bezeichnungen des Auftrags und/oder Gruppen übereinstimmt, wird der Auftrag dem Runner zugewiesen und zugesendet.
    • Wenn der Runner den zugewiesenen Auftrag nicht innerhalb von 60 Sekunden abholt, wird der Auftrag erneut in die Warteschlange gestellt, sodass er von einem neuen Runner angenommen werden kann.
  • Wenn GitHub keinen online und im Leerlauf befindlichen Runner findet, der mit den runs-on-Bezeichnungen und/oder Gruppen des Auftrags übereinstimmt, bleibt der Auftrag in der Warteschlange, bis ein Runner online geht.
  • Wenn der Auftrag länger als 24 Stunden in der Warteschlange bleibt, schlägt der Auftrag fehl.