Wie automatisiert GitHub Actions Entwicklungsaufgaben?
Hier werden GitHub Actions und Workflows vorgestellt. Sie erfahren mehr über die Typen von Aktionen, die Sie verwenden können, und wo Sie diese finden. Sie sehen sich auch Beispiele für diese Typen von Aktionen an, die veranschaulichen, wie diese Aktionen in einen Workflow passen.
Verkürzte Zeit von der Idee zur Bereitstellung durch GitHub
GitHub ist dazu konzipiert, Entwicklerteams und DevOps-Engineers bei der schnellen Entwicklung und Bereitstellung von Anwendungen zu unterstützen. In GitHub gibt es viele Features, die dies fördern, jedoch fallen sie im Allgemeinen in eine der folgenden zwei Kategorien:
- Kommunikation: Zu dieser Kategorie gehören alle Möglichkeiten, die GitHub bietet, um die Kommunikation bezüglich Softwareentwicklungsprojekte für Entwicklerteams zu vereinfachen: Code Reviews in Pull Requests, GitHub-Issues, Projektboards, Wikis, Benachrichtigungen und mehr.
- Automatisierung: GitHub Actions ermöglicht es Ihrem Team, Workflows bei jedem Schritt im Softwareentwicklungsprozess von der Integration bis zur Bereitstellung zu automatisieren. Sie können sogar das Hinzufügen von Bezeichnungen zu Pull Requests und die Überprüfung auf veraltete Issues und Pull Requests automatisieren.
In Kombination haben diese Feature es Tausenden Entwicklerteams ermöglicht, den Zeitaufwand von der ursprünglichen Idee bis zur Bereitstellung effektiv zu verkürzen.
Verwenden der Workflowautomatisierung zum Verkürzen der Entwicklungszeit
Dieses Modul befasst sich hauptsächlich mit Automatisierung. Daher wird im Folgenden veranschaulicht, wie Teams Automatisierung nutzen können, um den Zeitaufwand für einen üblichen Entwicklungs- und Bereitstellungsworkflow zu reduzieren.
Berücksichtigen Sie dabei alle Aufgaben, die durchgeführt werden müssen, nachdem der Code geschrieben, aber bevor der Code zuverlässig für seinen vorgesehenen Zweck verwendet werden kann. Abhängig von den Zielen Ihrer Organisation müssen Sie womöglich eine oder mehrere der folgenden Aufgaben durchführen:
- Sicherstellen, dass der Code alle Komponententests besteht
- Durchführen von Überprüfungen der Codequalität und -konformität, um sicherzustellen, dass der Quellcode die Standards der Organisation erfüllt
- Überprüfen des Codes und dessen Abhängigkeiten auf bekannte Sicherheitsprobleme
- Erstellen des Codes mit Integration mit einer neuen Quelle von (möglicherweise) mehreren Mitwirkenden
- Sicherstellen, dass die Software die Integrationstests besteht
- Versionierung des neuen Builds
- Bereitstellen der neuen Binärdateien am entsprechenden Speicherort im Dateisystem
- Bereitstellen der neuen Binärdateien auf einem oder mehreren Servern
- Wenn eine dieser Aufgaben nicht erfüllt wird, melden Sie das Problem der zuständigen Person bzw. dem zuständigen Team, um es zu lösen
Die Herausforderung besteht darin, diese Aufgaben zuverlässig, konsistent und nachhaltig auszuführen. Hierbei handelt es sich um eine ideale Aufgabe für die Workflowautomatisierung. Wenn Sie bereits GitHub verwenden, kann GitHub Actions eine hervorragende Lösung für die Einrichtung Ihrer Workflowautomatisierung darstellen.
Was ist GitHub Actions?
GitHub Actions sind Paketskripte, die Aufgaben in einem Workflow zur Softwareentwicklung in GitHub automatisieren. Sie können GitHub Actions konfigurieren, um komplexe Workflows auszulösen, die jedes Mal die Anforderungen Ihrer Organisation erfüllen, wenn Entwickler neuen Quellcode in einem spezifischen Branch in festgelegten Zeitintervallen oder manuell einchecken. Das Ergebnis ist ein zuverlässiger und nachhaltiger, automatisierter Workflow, der die Entwicklungszeit deutlich reduziert.
Wo finden Sie GitHub Actions?
Aktionen von GitHub Actions sind Skripts, die ein YML-Datenformat aufweisen. Jedes Repository enthält die Registerkarte Actions (Aktionen), die eine schnelle und einfache Möglichkeit bietet, mit dem Einrichten Ihres ersten Skripts zu beginnen. Wenn Sie einen Workflow sehen, der sich Ihrer Meinung nach als Ausgangspunkt eignet, müssen Sie lediglich auf die Schaltfläche Konfigurieren klicken, um das Skript hinzuzufügen und mit der Bearbeitung der YML-Quelldatei zu beginnen.
Neben den auf der Registerkarte „Actions“ vorgestellten Aktionen von GitHub Actions stehen Ihnen folgende Möglichkeiten zur Verfügung:
- Sie können im GitHub-Marketplace nach GitHub Actions suchen. Im GitHub-Marketplace können Sie Tools entdecken und erwerben, die Ihren Workflow erweitern.
- Sie können nach Open-Source-Projekten suchen. Die GitHub Actions-Organisation enthält beispielsweise viele beliebte Open-Source-Repositorys, die GitHub Actions-Aktionen enthalten, die Sie verwenden können.
- Sie können Ihre GitHub Actions-Aktionen von Grund auf neu schreiben. Wenn Sie möchten, können Sie diese außerdem öffentlich zugänglich zur Verfügung stellen (Open Source) oder sogar im GitHub-Marketplace veröffentlichen.
Verwenden von Open-Source-Aktionen von GitHub Actions
Viele GitHub Actions-Aktionen sind Open Source und für alle Benutzer*innen verfügbar, die sie verwenden möchten. Ebenso wie bei jeder Open-Source-Software müssen Sie diese sorgfältig überprüfen, bevor Sie sie in Ihrem Projekt verwenden können. Ähnlich wie bei den empfohlenen Communitystandards für Open Source-Software, wie das Einschließen einer Infodatei, von Verhaltensregeln, einer „Contributing“-Datei (Mitwirkende) und von Problemvorlagen, um nur ein paar zu nennen, sollten Sie bei der Verwendung von GitHub Actions die folgenden Empfehlungen befolgen:
- Überprüfen Sie die
action.yml
-Datei der Aktion auf Eingaben, Ausgaben und um sicherzustellen, dass der Code das macht, was er zu tun beansprucht. - Überprüfen Sie, ob die Aktion im GitHub Marketplace vorhanden ist. Dies ist eine gute Überprüfung, auch wenn eine Aktion nicht im GitHub Marketplace verfügbar sein muss, um gültig zu sein.
- Überprüfen Sie, ob die Aktion im GitHub Marketplace überprüft wurde. Dies bedeutet, dass GitHub die Verwendung dieser Aktion genehmigt hat. Sie sollten sie dennoch zuerst überprüfen, bevor Sie sie verwenden.
- Schließen Sie die Version der von Ihnen verwendeten Aktion ein, indem Sie einen Git-Verweis, einen SHA oder ein Tag angeben.
Arten von GitHub-Aktionen
Es gibt drei Typen von GitHub Actions-Aktionen: Containeraktionen, JavaScript-Aktionen und zusammengesetzte Aktionen.
Bei Containeraktionen ist die Umgebung Teil des Aktionscodes. Diese Aktionen können nur in einer Linux-Umgebung ausgeführt werden, die von GitHub gehostet wird. Containeraktionen unterstützen viele verschiedene Sprachen.
JavaScript-Aktionen schließen die Umgebung nicht in den Code ein. Sie müssen die Umgebung angeben, um diese Aktionen auszuführen. Sie können diese Aktionen auf einem virtuellen Computer in der Cloud oder lokal ausführen. JavaScript-Aktionen unterstützen Linux-, macOS-und Windows-Umgebungen.
Zusammengesetzte Aktionen ermöglichen Ihnen, mehrere Workflowschritte in einer Aktion zusammenzufassen. Du kannst diese Funktion zum Beispiel nutzen, um mehrere Ausführungsbefehle in einer Aktion zu bündeln und dann einen Workflow einzurichten, der die gebündelten Befehle in einem einzigen Schritt mit dieser Aktion ausführt.
Anatomie einer GitHub Actions-Aktion
Im Folgenden finden Sie ein Beispiel für eine Aktion, die ein Git-Check-Out eines Repositorys ausführt. Diese Aktion (actions/checkout@v1) ist Teil eines Schritts in einem Workflow. In diesem Schritt wird auch der Node.js-Code erstellt, der ausgecheckt wurde. Im nächsten Abschnitt werden Workflows, Aufträge und Schritte erläutert.
steps:
- uses: actions/checkout@v1
- name: npm install and build webpack
run: |
npm install
npm run build
Angenommen, Sie möchten eine Containeraktion verwenden, um Containercode auszuführen. Ihre Aktion könnte folgendermaßen aussehen:
name: "Hello Actions"
description: "Greet someone"
author: "octocat@github.com"
inputs:
MY_NAME:
description: "Who to greet"
required: true
default: "World"
runs:
uses: "docker"
image: "Dockerfile"
branding:
icon: "mic"
color: "purple"
Beachten Sie den Abschnitt inputs
. Hier erhalten Sie den Wert einer Variablen namens MY_NAME
. Diese Variable wird in dem Workflow festgelegt, der diese Aktion ausführt.
Beachten Sie im Abschnitt runs
, dass Sie docker im uses
-Attribut angeben. Dadurch müssen Sie den Pfad zur Docker-Imagedatei angeben. Hier wird die Bezeichnung Dockerfile verwendet. Wir werden an dieser Stelle nicht auf die Besonderheiten von Docker eingehen. Wenn Sie jedoch weitere Informationen benötigen, sehen Sie sich das Modul Einführung in Docker-Container an.
Im letzten Abschnitt, Branding, wird Ihre Aktion im GitHub Marketplace personalisiert, wenn Sie sie dort veröffentlichen möchten.
Eine vollständige Liste der Aktionsmetadaten finden Sie unter Metadatensyntax für GitHub Actions.
Was ist ein GitHub Actions-Workflow?
Ein GitHub Actions-Workflow ist ein Prozess, den Sie in Ihrem Repository einrichten, um Aufgaben im Lebenszyklus der Softwareentwicklung zu automatisieren, einschließlich GitHub Actions. Mit einem Workflow können Sie Projekte auf GitHub erstellen, testen, packen, freigeben und bereitstellen.
Um einen Workflow zu erstellen, fügen Sie einer YML-Datei im Verzeichnis .github/workflows
in Ihrem GitHub-Repository Aktionen hinzu.
In der nachfolgenden Übung wird die Workflow-Datei, main.yml, wie folgt aussehen:
name: A workflow for my Hello World file
on: push
jobs:
build:
name: Hello world action
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: ./action-a
with:
MY_NAME: "Mona"
Beachten Sie das on:
-Attribut. Dies ist ein Auslöser, mit dem angegeben wird, wann der Workflow ausgeführt wird. Hier wird damit bei einem Push-Ereignis an Ihr Repository eine Ausführung ausgelöst. Sie können einzelne Ereignisse wie on: push
, eine Reihe von Ereignissen wie on: [push, pull_request]
oder eine Ereigniskonfigurationszuordnung angeben, die einen Workflow plant oder die Ausführung eines Workflows auf bestimmte Dateien, Tags oder Branchänderungen beschränkt. Diese Zuordnung sieht ungefähr so aus:
on:
# Trigger the workflow on push or pull request,
# but only for the main branch
push:
branches:
- main
pull_request:
branches:
- main
# Also trigger on page_build, as well as release created events
page_build:
release:
types: # This configuration does not affect the page_build event above
- created
Ein Ereignis wird bei allen Aktivitätstypen für das Ereignis ausgelöst, es sei denn, Sie geben den Typ bzw. die Typen an. Eine umfassende Liste der Ereignisse und deren Aktivitätstypen finden Sie unter Ereignisse, die Workflows auslösen in der GitHub-Dokumentation.
Ein Workflow muss mindestens einen Auftrag enthalten. Ein Auftrag ist ein Abschnitt des Workflows, der einem Runner zugeordnet wird. Ein Runner kann in GitHub gehostet werden oder sich selbst hosten, und der Auftrag kann auf einem Computer oder in einem Container ausgeführt werden. Sie geben den Runner mit dem runs-on:
-Attribut an. Hier weisen Sie den Workflow an, diesen Auftrag auf ubuntu-latest
auszuführen.
Für jeden Auftrag müssen Schritte ausgeführt werden. In unserem Beispiel verwendet der Schritt die Aktion actions/checkout@v1, um das Repository auszuchecken. Der Wert uses: ./action-a
ist besonders interessant, denn dieser ist der Pfad zur Containeraktion, die Sie in einer action.yml-Datei erstellen. Die Inhalte einer action.yml-Datei wurden bereits im Abschnitt Was ist GitHub Actions? erläutert.
Im letzten Teil dieser Workflowdatei wird der Wert der Variablen MY_NAME
für diesen Workflow festgelegt. Denken Sie dran, dass für die Containeraktion eine Eingabe mit der Bezeichnung MY_NAME
erforderlich war.
Weitere Informationen zur Workflowsyntax finden Sie unter Workflowsyntax für GitHub Actions.
Vergleich zwischen von GitHub gehosteten und selbstgehosteten Runnern
Wir haben kurz erwähnt, dass Runner einem Auftrag zugeordnet sind. Ein Runner ist einfach ein Server, auf dem die Runneranwendung von GitHub Actions installiert ist. Im vorherigen Workflowbeispiel gab es ein runs-on: ubuntu-latest
-Attribut im Auftragsblock, das dem Workflow mitgeteilt hat, dass der Auftrag mithilfe des von GitHub gehosteten Runners ausgeführt wird, der in der ubuntu-latest
-Umgebung ausgeführt wird.
Wenn es um Runner geht, gibt es zwei Optionen, aus denen Sie wählen können: Von GitHub-gehostete Runner oder selbst gehostete Runner. Wenn Sie einen von GitHub gehosteten Runner verwenden, wird jeder Auftrag in einer neuen Instanz einer virtuellen Umgebung ausgeführt, die durch den von Ihnen definierten Typ des auf GitHub gehosteten Runners angegeben wird: runs-on: {operating system-version}
. Bei selbstgehosteten Runnern müssen Sie die Bezeichnung „selbstgehostet“, das Betriebssystem und die Systemarchitektur anwenden. Ein selbst gehosteter Runner mit einem Linux-Betriebssystem und einer ARM32-Architektur sähe beispielsweise wie folgt aus: runs-on: [self-hosted, linux, ARM32]
.
Jeder Typ von Runner hat seine Vorteile, jedoch bieten von GitHub gehostete Runner eine schnellere und einfachere Möglichkeit zum Ausführen Ihrer Workflows, allerdings mit eingeschränkten Optionen. Selbstgehostete Runner sind eine hochgradig konfigurierbare Methode zum Ausführen von Workflows in ihrer eigenen, benutzerdefinierten lokalen Umgebung. Sie können selbst gehostete Runner lokal oder in der Cloud ausführen. Sie können selbstgehostete Runner auch verwenden, um eine benutzerdefinierte Hardwarekonfiguration mit mehr Verarbeitungsleistung oder Arbeitsspeicher zu erstellen, um größere Aufträge auszuführen, in Ihrem lokalen Netzwerk verfügbare Software zu installieren und ein Betriebssystem auszuwählen, das von in GitHub gehosteten Runnern nicht angeboten wird.
Mögliche Nutzungseinschränkungen bei GitHub Actions
Die Verwendung von GitHub Actions hängt von Ihrem GitHub-Abo ab und davon, ob Ihr Runner von GitHub gehostetet wird oder sich selbst hostet. Weitere Informationen zu Nutzungslimits finden Sie in der GitHub-Dokumentation unter Nutzungslimits, Abrechnung und Verwaltung.