Skip to main content

Verwenden von 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.

Note

Auf GitHub gehostete Runner werden aktuell nicht auf GitHub Enterprise Server unterstützt. Weitere Informationen zur geplanten zukünftigen Unterstützung findest Du in der GitHub public roadmap.

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.

Note

Actions Runner Controller unterstützt keine mehrfachen Bezeichnungen, nur der Name des Runners kann anstelle einer Bezeichnung verwendet werden.

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.

Selbstgehostete Runner weisen möglicherweise die Bezeichnung self-hosted auf. Beim Einrichten eines selbstgehosteten Runners wird standardmäßig die Bezeichnung self-hosted eingeschlossen. Du kannst das Flag --no-default-labels übergeben, um zu verhindern, dass die selbstgehostete Bezeichnung angewendet wird. Mit Bezeichnungen können Optionen zur Zielgruppenadressierung für Runner erstellt werden, z. B. im Hinblick auf Betriebssystem oder Architektur. Wir empfehlen 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.

Beachte, dass der Actions Runner Controller mehrfache Bezeichnungen nicht unterstützt und die Bezeichnung self-hosted nicht unterstützt.

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- oder Unternehmensebene 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 selbst gehostete 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.

Wenn Du individuelle selbst gehostete Runner ohne die Standardbezeichnungen erstellen möchtest, übergib beim Erstellen des Runners das --no-default-labels-Flag. Actions Runner Controller unterstützt keine mehrfachen Bezeichnungen.

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@v4
      - uses: actions/setup-node@v4
        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@v4
      - uses: actions/setup-node@v4
        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.