GitHub.actions

21.12.2021

Nachdem GitHub in der Versionsverwaltung bereits in vielen Punkten der Standard ist, wird mit GitHub.actions nun auch ein CI/CD-fähiges Tool bereitgestellt. Es ermöglicht Source-Code direkt auf GitHub zu erstellen, zu testen, auszuführen und entsprechend zu deployen.

Mit Actions ist es problemlos möglich Arbeitsabläufe, welche in einem DevOps Betrieb anfallen, zu automatisieren. Geworben wird bei GitHub.Actions mit dem Stichwort „Any language„, also dem Support jeder Sprache. Offizielle Einträge in der Dokumentation gibt es zu .NET, Node.jsPython, PowerShell, Ruby, Swift, Java Maven & Gradle und Apache Ant.

Glossar

Action Alleinstehender Befehl, bildet (mit gegebenenfalls weiteren Actions) einen Step.
Step Menge von Aufgaben, die einen Job bilden. Jeder Step innerhalb eines Jobs wird auf dem selben Runner ausgeführt und kann deshalb Daten mit anderen Steps teilen.
Jobs Jobs werden auf dem Runner ausgeführt. Dies kann parallel oder sequentiell geschehen.
Workflow Als Workflow wird ein automatischer Ablauf bezeichnet. Ein oder mehrere Jobs bilden einen Workflow.
Event Events sind Ereignisse, welche einen Workflow auslösen. Dies können sowohl im Code-Flow als auch zeitgesteuerte Events sein.
Runner Führt Jobs aus und gibt den entsprechenden Status an GitHub zurück. Es können sowohl von GitHub zur Verfügung gestellte Server als auch eigene als Runner genutzt werden.

Hauptfeatures von GitHub.Actions

Zu den wichtigsten Features von GitHub.Actions zählen:

  • Pipelines in allen relevanten Betriebssystemen – direkt auf GitHub.
  • Environment Variables um Verknüpfungen und Variablen zu erstellen.
  • Mittels Workflows können Scripts aufgerufen werden. Zu den unterstützten Script-Sprachen zählen:
    • BASH, Python, PowerShell Core & Desktop und cmd
  • Verwaltung von Infrastruktur mittels externer Tools, wie z.B. Terraform. (Dies ist kein Build-in Feature und muss mittels den entsprechenden Tools manuell aufgesetzt werden)
  • Austausch von Daten zwischen Jobs über sogenannte Artifacts. Diese werden von einen Job erstellt und können dann von einem anderen wieder heruntergeladen werden. Sie können zum Beispiel folgendes enthalten:
    • binary und package files, Test-Ergebnisse, Screenshots und Log-Files
  • Ausführen von Jobs in einer Matrix. So kann beispielsweise ein Job auf verschiedenen Betriebssystemen und Versionen ausgeführt werden. Besteht eine OS-Matrix mit dem Inhalt: [macos-latest, ubuntu-18.04], wird der Job parallel auf der aktuellsten MacOS-Version und auf Ubuntu 18.04 ausgeführt.
  • Docker Support, zur Containerisierung von Software.
  • Webhook Support, um z.B. Workflows über externe Trigger auszulösen.
  • Job-Ergebnisse können mit sog. Status Badges dargestellt werden. Dies kann zum Beispiel dazu dienen, das Ergebnis von Test-Methoden abzubilden.

Hello World als Workflow

Workflows lassen sich in nur wenigen Schritten erstellen.

Zuerst wird in seinem GitHub Repository eine YAML-Datei unter dem Pfad .github/workflows/ angelegt.

Anschließend wird der Workflow mittels YAML Syntax festgelegt.

Der Workflow ist nun unter dem Reiter „Actions“ aufgeführt.

Über einen Klick auf den entsprechenden Workflow lässt sich eine Detailansicht öffnen.

Kosten

Das Abrechnungsmodell von github.actions ist in den bekannten Preiskategorien Free, Team und Enterprise integriert. So sind in einem freien Account bereits 2000 Minuten im Monat inklusive, was für die meisten kleineren Projekte ausreichen sollte.

 

 

 

 

Unter dem User Profil wird eine Übersicht über die im aktuellen Monat bereits verbrauchte Verarbeitungszeit angezeigt:

 

Fazit

Die Syntax zum Erstellen eines Workflows orientiert sich sehr stark an den bekannten Standards von Jenkins und Azure DevOps. Mit github.actions schließt github eine Lücke und entwickelt sich immer weiter in Richtung DevOps. Durch die verschiedenen vorbereiteten Steps lässt es sich in den meisten Standard-Projekten problemlos einsetzen.

Mit github.projects steht bereits das nächste Projekt, um eine komplette DevOps Struktur analog zu Azure DevOps abzubilden in der Beta zur Verfügung.

 


Co-Author: Maximilian Müller

Quellen:

https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions  

https://docs.github.com/en/actions/quickstart 

https://docs.github.com/en/actions/learn-github-actions/essential-features-of-github-actions 

https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows 

https://github.com/features/actions

https://github.com/pricing

 

Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*Pflichtfelder

*