Verstehen von GitHub Actions

Abgeschlossen

Mithilfe eines Workflows können Sie die Schritte in Ihrem Bereitstellungsprozess automatisieren. Jedes Mal, wenn Sie eine Änderung an Ihrem Code vornehmen und die Änderung in Ihr Git-Repository committen, führt der Workflow Ihren vordefinierten Prozess aus. Ein Workflow kann überprüfen, ob Ihr Bicep-Code Ihren Qualitätsstandards entspricht, und dann die Aktionen zum Bereitstellen Ihrer Ressourcen in Azure automatisieren. Der Prozess wird in einer Workflowdefinition festgelegt, die Sie erstellen.

GitHub Actions ist ein Feature von GitHub. GitHub hostet auch die Git-Repositorys, die Sie zum Speichern und Freigeben Ihres Codes für Ihre Projektmitarbeiter verwenden. Nachdem Ihr Bicep-Code in GitHub gespeichert ist, kann GitHub Actions darauf zugreifen, um Ihre Bereitstellungsprozesse zu automatisieren. In dieser Lerneinheit erfahren Sie mehr über GitHub Actions.

Was ist ein Workflow?

Ein Workflow ist ein konfigurierbarer und wiederholbarer Prozess, der in einer Datei definiert ist und zum Testen und Bereitstellen Ihres Codes verwendet wird. Ein Workflow besteht aus allen Schritten in der entsprechenden Reihenfolge, die Sie ausführen müssen.

Wenn Sie mit GitHub Actions arbeiten, definieren Sie Ihre Workflowkonfiguration in einer YAML-Datei. Da es sich bei einer YAML-Workflowdatei um eine Codedatei handelt, wird die Datei zusammen mit Ihrem Bicep-Code in einem Ordner namens .github/workflows in Ihrem Git-Repository gespeichert. Eine YAML-Datei ist eine strukturierte Textdatei, ähnlich einer strukturierten Bicep-Textdatei. Sie können eine YAML-Datei mit einem beliebigen Text-Editor erstellen und bearbeiten. In diesem Modul verwenden Sie Visual Studio Code als Editor. Auf der GitHub-Website finden Sie Tools für das Anzeigen und Bearbeiten Ihrer YAML-Workflowdatei, zur Zusammenarbeit an Ihrer Workflowdefinition und zum Verwalten unterschiedlicher Versionen Ihrer Workflowdatei mit Commits und Branches.

Runner

Bisher haben Sie Ihre Bicep-Dateien von Ihrem lokalen Computer aus bereitgestellt. Nachdem Sie eine Bicep-Vorlage geschrieben haben, stellen Sie sie in Azure mithilfe des Azure CLI oder Azure PowerShell bereit. Diese Tools verwenden die Ressourcen Ihres Computers, um die Vorlage an Azure zu übermitteln. Sie verwenden Ihre persönliche Identität, um sich bei Azure zu authentifizieren und zu überprüfen, ob Sie über die Berechtigungen zum Bereitstellen der Ressourcen verfügen.

Ein Workflow benötigt auch Zugriff auf einen Computer oder eine GPU mit dem geeigneten Betriebssystem und der geeigneten Hardwareplattform, damit er die Bereitstellungsaktionen ausführen kann. GitHub Actions verwendet Runner. Dabei handelt es sich um Computer, die für die Ausführung der Bereitstellungsschritte für einen Workflow konfiguriert sind. Jeder Runner verfügt bereits über die Bicep- und Azure-Tools, die Sie in den vorherigen Modulen verwendet haben, sodass er dieselben Dinge wie Sie auf Ihrem eigenen Computer ausführen kann. Anstelle einer Person, die Befehle ausführt, weist der GitHub Actions-Dienst den Runner an, die von Ihnen in der YAML-Workflowdatei definierten Schritte auszuführen.

GitHub Actions stellt mehrere Arten von Runnern für unterschiedliche Betriebssysteme wie Linux oder Windows und mit verschiedenen Tools zur Verfügung. GitHub verwaltet diese Runner, damit Sie keine Computeinfrastruktur für die Runner benötigen. Runner werden manchmal als von GitHub gehostete Runner oder gehostete Runner bezeichnet, da sie in Ihrem Namen gehostet werden. Bei der Ausführung Ihres Workflows wird automatisch ein gehosteter Runner erstellt. Nach Abschluss der Ausführung Ihres Workflows wird der gehostete Runner automatisch gelöscht. Sie können nicht direkt auf gehostete Runner zugreifen. Daher ist es wichtig, dass Ihr Workflow alle erforderlichen Schritte zum Bereitstellen Ihrer Lösung enthält.

Diagram that shows a workflow that runs on a runner.

Hinweis

Sie können einen benutzerdefinierten Runner erstellen, der als selbstgehosteter Runner bezeichnet wird. Ein selbstgehosteter Runner bietet sich z. B. an, wenn Sie über bestimmte Software verfügen, die Sie als Teil Ihres Workflows ausführen müssen, oder wenn Sie präzise Kontrolle über die Konfiguration des Runners benötigen. In diesem Modul werden keine selbstgehosteten Runner besprochen, Sie finden aber im Abschnitt „Zusammenfassung“ einen Link zu weiteren Informationen.

Auslöser

Sie müssen GitHub Actions mithilfe eines Triggers anweisen, wann Ihr Workflow ausgeführt werden soll. Ihnen stehen mehrere Triggertypen zur Auswahl. Vorerst verwenden Sie einen manuellen Trigger, um GitHub Actions mitzuteilen, wann mit der Ausführung Ihres Workflows begonnen werden soll. Später in diesem Modul erfahren Sie mehr über andere Triggertypen.

Diagram that shows a trigger initiating a workflow.

Schritte

Ein Schritt stellt einen einzelnen Vorgang dar, der vom Workflow ausgeführt wird. Ein Schritt ähnelt einem einzelnen Befehl, den Sie in Bash oder PowerShell ausführen. Für die meisten Bereitstellungen führen Sie mehrere Schritte in einer Abfolge aus. Sie definieren die Abfolge und alle Details jedes Schritts in Ihrer YAML-Workflowdatei.

GitHub Actions bietet zwei Arten von Schritten:

  • Ausführungsschritte: Sie können einen Ausführungsschritt verwenden, um einen einzelnen Befehl oder eine Befehlssequenz in Bash, PowerShell oder der Windows-Befehlsshell auszuführen.
  • Aktionsschritte: Aktionsschritte bieten Ihnen eine praktische Möglichkeit, um auf viele verschiedene Funktionen zuzugreifen, ohne Skriptanweisungen schreiben zu müssen. Beispielsweise gibt es einen integrierten Task zum Bereitstellen von Bicep-Dateien in Azure. Jede Person kann eine Aktion schreiben und für andere Benutzer freigeben. Es stehen bereits sehr viele kommerzielle und Open-Source-Tasks zur Verfügung.

Einige Personen bevorzugen die Verwendung von Skriptanweisungen anstelle von Aktionen, da sie mehr Kontrolle darüber bieten, was genau ausgeführt wird. Andere bevorzugen die Verwendung von Aktionen, damit sie keine Skripts schreiben und verwalten müssen. In diesem Modul verwenden wir eine Mischung aus beiden Ansätzen.

Aufträge

In GitHub Actions stellt ein Auftrag eine geordnete Menge von Schritten dar. Sie verfügen immer über mindestens einen Auftrag in einem Workflow. Wenn Sie komplexe Bereitstellungen erstellen, verfügen Sie üblicherweise über mehrere Aufträge.

Hinweis

Sie können festlegen, dass jeder Auftrag auf einem anderen Runner ausgeführt wird. Die Ausführung von Aufträgen auf unterschiedlichen Runnern ist nützlich, wenn Sie Lösungen erstellen und bereitstellen, die unterschiedliche Betriebssysteme in verschiedenen Teilen Ihres Workflows verwenden müssen.

Angenommen, Sie erstellen z. B. eine iOS-App und deren Back-End-Dienst. Möglicherweise verfügen Sie über einen Auftrag, der auf einem macOS-Runner ausgeführt wird, um die iOS-App zu erstellen, und einen anderen Auftrag, der auf einem Ubuntu- oder Windows-Runner ausgeführt wird, um das Back-End zu erstellen. Sie können den Workflow sogar anweisen, die beiden Aufträge gleichzeitig auszuführen, um die Ausführung Ihres Workflows zu beschleunigen.

Diagram that shows a workflow with two steps, both within one job.

Einfaches Workflowbeispiel

Nachdem Sie nun die grundlegenden GitHub Actions-Konzepte kennen, sehen Sie sich eine einfache Workflowdefinition in YAML an:

name: learn-github-actions

on: [workflow_dispatch]

jobs:
  say-hello:
    runs-on: ubuntu-latest
    steps:
      - name: 'Run a one-line command'
        run: echo "hello from GitHub Actions"
      - name: 'Run a multi-line command'
        run: |
          echo "We'll add more steps soon."
          echo "For example, we'll add our Bicep deployment step."

Sehen Sie sich die einzelnen Teile der Datei im Detail an:

  • name ist der Name Ihres Workflows. Der Name wird auf der GitHub-Weboberfläche angezeigt.
  • on teilt Ihrem Workflow mit, wann er ausgeführt werden soll. In diesem Fall teilt on: [workflow_dispatch] GitHub Actions mit, dass Sie den Workflow manuell auslösen möchten.
  • jobs gruppiert alle Aufträge zusammen in Ihrem Workflow.
  • say-hello ist der Name Ihres ersten und einzigen Auftrags in diesem Workflow.
  • runs-on weist den Workflow an, welcher Runner bei der Auftragsausführung verwendet werden soll. In diesem Beispiel wird der Workflow auf einem Ubuntu-Betriebssystem ausgeführt, das aus einem Pool von Runnern stammt, die in GitHub gehostet werden.
  • steps listet die Abfolge der Schritte auf, die innerhalb des Auftrags ausgeführt werden sollen. Das YAML-Beispiel enthält zwei Schritte. Beide Schritte führen ein einfaches Skript aus, um Text auszugeben. Jeder Schritt verfügt über einen name-Wert, der für Menschen lesbar ist. Der Name wird in den Workflowprotokollen angezeigt. Um einen mehrzeiligen Skriptschritt zu erstellen, verwenden Sie den senkrechten Strich (|) wie im Beispiel gezeigt. Nachdem Ihr Schritt ausgeführt wurde, werden die Ausgaben im Workflowprotokoll angezeigt.

Wichtig

In YAML-Dateien sind Einzüge wichtig. Sehen Sie sich das YAML-Beispiel an. Einige Zeilen im YAML-Code sind um zwei oder vier Leerzeichen eingerückt. GitHub Actions kann Ihre Datei nur dann ordnungsgemäß interpretieren, wenn die Einzüge stimmen. Mit Visual Studio Code können Sie Fehler bei Einzügen in Ihren YAML-Dateien finden und beheben.