Was ist GitHub Actions?

06.06.2023
Von 
Josh Fruhlinger ist freier Autor in Los Angeles.
GitHub Actions ermöglicht nahtlose, vielseitige CI/CD-Pipelines. Das sollten Sie über die Plattform wissen.
Ähnlich wie die Klappe am Filmset setzt GitHub Actions vorab definierte Abläufe in Gang.
Ähnlich wie die Klappe am Filmset setzt GitHub Actions vorab definierte Abläufe in Gang.
Foto: Gorodenkoff - shutterstock.com

GitHub Actions ist eine in GitHub integrierte Plattform, mit der Sie Software automatisiert erstellen, prüfen und bereitstellen können. GitHub wiederum gehört Microsoft und ist ein Hosting Service für Softwareentwickler, die mit Git arbeiten - einem von Linus Torvalds entwickelten Open-Source-Programm, das zu Versionskontroll- und Collaboration-Zwecken zum Einsatz kommt.

Git und GitHub dienen bereits diversen Developern und Unternehmen als Entwicklungsgrundlage. Auch wenn es um Continuous Integration und Continuous Delivery (CI/CD) geht. GitHub Actions ermöglicht es, alle möglichen Verhaltensweisen zu automatisieren, die auf verschiedenen Auslösern basieren.

Das Licht der Welt erblickte GitHub Actions im Jahr 2018. Es ist aber nicht das einzige Tool, das Sie verwenden können, um Ihre GitHub-basierten Projekte um CI/CD-Automatisierung zu erweitern (dazu später mehr). Die Plattform bietet jedoch den Vorteil, dass Sie sich als Nutzer nicht um die zugrundeliegende Infrastruktur kümmern müssen. GitHub Actions ist vollumfänglich in GitHub integriert und seine Workflows für GitHub konzipiert.

GitHub Actions verstehen

Um die Funktionsweise von GitHub Actions zu durchdringen, ist ein Blick auf seine Komponenten sinnvoll:

  • Ereignis: Ein Ereignis setzt eine automatisierte GitHub-Actions-Pipeline in Gang. Dieses Ereignis kann etwas Bestimmtes sein, das innerhalb eines Repository passiert - zum Beispiel ein Pull-Request, ein Commit, ein geplanter Trigger, ein REST-API-Post oder auch nur ein manueller Befehl.

  • Workflow: Jedes Ereignis kann einen Workflow auslösen. Dieser Begriff beschreibt übergreifend einen automatisierten Prozess, den Sie mithilfe von GitHub Actions zusammenstellen. Sie könnten einen Workflow zum Beispiel verwenden, um Ihre Anwendung bereitzustellen, wenn eine neue Version fertig ist. Definiert wird ein Workflow in einer YAML-Datei, die im .github/workflows-Verzeichnis Ihres Repositories gespeichert wird. Die Syntax finden Sie in der GitHub-Dokumentation.

  • Auftrag: Die Dinge, die im Rahmen eines Workflows erledigt werden sollen, werden in einem oder mehreren Aufträgen gruppiert. Jeder Auftrag besteht dabei aus einer Reihe von Schritten, die in einer von Ihnen festgelegten Reihenfolge ablaufen. Ihr Workflow kann aus mehreren Aufträgen bestehen, die parallel oder sukzessive (oder einer Kombination aus beidem) ablaufen. Sie können auch Abhängigkeiten zwischen Aufträgen erstellen. So ist es beispielsweise möglich, mehrere Aufträge für verschiedene Chip-Architekturen parallel laufen zu lassen. Sobald alle diese Aufträge abgeschlossen sind, würde ein weiterer Auftrag die Builds zusammenfassen.

  • Aktion: Ein einzelner Schritt innerhalb eines Auftrags kann aus einem einfachen Shell-Skript bestehen, aber wenn Sie etwas Komplexeres benötigen, können Sie auch eine Aktion verwenden. Diese besteht aus Code, den Sie schreiben und der mit Ihrem GitHub-Repository interagiert. Dafür können Sie die GitHub-API oder die eines Drittanbieters nutzen. Die Aufgaben, die von Aktionen ausgeführt werden können, reichen von der Code-Bereitstellung bis hin zum Aussenden einer SMS-Warnung an Entwickler. Aktionen können so geschrieben werden, dass sie innerhalb eines Docker-Containers ausgeführt werden. Einer der wichtigsten Aspekte von Aktionen ist jedoch, dass sie wiederverwendbar sind. Es handelt sich um eigenständige Anwendungen, die in der YAML-Datei referenziert werden und von mehreren Workflows in Ihrem Unternehmen verwendet werden können. Darüber hinaus steht auf dem GitHub-Actions-Marktplatz eine große Auswahl an kostenlosen und quelloffenen Drittanbieter-Aktionen zur Verfügung.

  • Runner: Ein Runner ist der Server, auf dem ein Auftrag ausgeführt wird. Jeder Auftrag innerhalb eines Workflows erhält dabei seinen eigenen Runner. Dabei handelt es sich in der Regel um virtuelle Maschinen, die von GitHub gehostet werden und mit Ubuntu Linux, Windows oder macOS laufen. Wenn Sie eine Aufgabe auf einer bestimmten Hardwarekonfiguration oder einem bestimmten Betriebssystem ausführen möchten, können Sie auch selbst einen Runner hosten.

Die GitHub-Dokumentation enthält zahlreiche Beispiele, die Sie dabei unterstützen, die Funktionsweise von GitHub Actions zu verstehen. In einem ersten Schritt könnten Sie zum Beispiel Ihren Code auf einem Runner testen oder versuchen, über das Kommandozeilen-Interface mit GitHub Actions zu arbeiten.

Ein nützliches Tutorial für GitHub Actions bietet auch der YouTube-Channel von Fireship.io:

GitHub Actions absichern

Wenn Sie GitHub Actions auf Code in einem GitHub-Repository ausführen, arbeiten Sie dabei sehr wahrscheinlich mit einer verteilten Codebasis - was Security-Komplikationen hervorrufen kann. Um zu gewährleisten, dass Ihre Workflows sicher sind, empfiehlt GitHub folgende Security Best Practices:

  • Encrypted Secrets für sensible Daten nutzen. Passwörter oder API-Anmeldedaten sollten niemals in Ihren Workflow-Definitionen festcodiert werden. GitHub ermöglicht es Ihnen, solche Daten als Encrypted Secrets abzuspeichern.

  • Workflow-Files im Auge behalten. Gelingt es einem Angreifer, Ihre Workflow-Definitionen zu manipulieren, könnten Sie diesen schon Tür und Tor öffnen, wenn Sie nur einen Auftrag ausführen. Die "Code Owners"-Funktion von GitHub zu nutzen, empfiehlt sich, um den Zugriff auf bestimmte Verzeichnisse einzuschränken.

  • Script-Injections zuvorkommen. Auch ausführbarer Code, der von böswilligen Angreifern eingeschleust wird, ist im Fall von GitHub Actions ein denkbares Szenario. Sie tun deshalb gut daran, für GitHub Actions die gleichen defensiven Maßstäbe anzulegen, wie für jede andere Form von potenziell sensiblem Code.

  • Vorsicht bei Drittanbieter-Code. Actions und Worklfow-Code gibt es nicht nur auf dem offiziellen Marketplace. Diese Drittanbieter-Ressourcen können hilfreich sein, sollten aber niemals unbedacht in Ihre Codebasis integriert werden. Stellen Sie sicher, dass diese Module denselben Sicherheitsanforderungen genügen, wie jede andere Form von Code, den Sie in Produktion bringen.

Ausführlichere Sicherheitsinformationen finden Sie direkt auf GitHub.

GitHub Actions integrieren

Da GitHub eine (relativ) offene Plattform ist und GitHub-Actions-Workflows in deklarativem YAML beschrieben werden, gibt es einige Möglichkeiten, Ihren GitHub-Actions-Code in andere Plattformen zu integrieren:

  • Sie können Ihre Actions auf CodeCatalyst, dem Managed Software Development Service von Amazon Web Services, nutzen, indem Sie einen Wrapper verwenden, der sie in konzeptionell ähnliche CodeCatalyst-Actions umwandelt.

  • GitHub-Actions-Workflows können so geschrieben werden, dass sie Code über Microsofts Azure App Service-Hosting-Plattform bereitstellen.

  • Microsofts Visual Studio bietet eine Erweiterung, mit der GitHub-Actions-Workflows erstellt und gemanagt werden können, ohne den Editor zu verlassen.

  • Google Cloud Platform hat eine Reihe von Actions realisiert, mit denen Sie den in einem GitHub-Repository gespeicherten Code in den Cloud-Service integrieren können.

Was GitHub Actions kostet

GitHub Actions ist kostenlos, wenn Ihre Aufträge auf standardmäßigen, von GitHub gehosteten Runnern in öffentlichen Repositories ausgeführt werden - oder Sie Ihre Runner selbst hosten.

Wenn Sie ein privates Repository verwenden, erhalten Sie eine bestimmte Menge an Speicherplatz und Rechenressourcen. Was darüber hinausgeht, müssen Sie bezahlen. Weitere Einzelheiten zum Abrechnungsmodell und den genauen Preisen (Minutenbasis) finden Sie hier.

Alternativen zu GitHub Actions

Wie eingangs erwähnt, gibt es noch weitere Tools auf dem Markt, die den CI/CD-Prozess automatisieren. Eines der bekanntesten und ausgereiftesten Angebote ist dabei das (quelloffene) Projekt Jenkins. Das arbeitet über Plugins mit mit GitHub-Repositories (und mit Code in einer beliebigen Anzahl anderer Umgebungen). Im Allgemeinen ist Jenkins dabei recht flexibel, die Lernkurve kann im Vergleich zu GitHub Actions allerdings steiler ausfallen.

Wenn Sie GitHub verwenden und nicht bereits in ein plattformübergreifendes Tool (wie Jenkins) investiert haben, ist GitHub Actions die logische Wahl in Sachen CI/CD-Automatisierung. (fm)

Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation Infoworld.