GitHub Actions
Automatisierung mittels GitHub-Repositories
Die manuelle Erstellung von Build-Artefakten und deren Bereitstellung ist häufig zeitaufwändig und fehleranfällig. Deren Automatisierung z. B. durch Continuous Integration bzw. Continuous Delivery führt zu einer höheren Softwarequalität und entlastet Entwickler. Mit GitHub Actions lassen sich viele Prozesse rund um ein Git-Repository – auch jenseits von Continuous Integration / Continuous Delivery – automatisieren. Die nahtlose Integration in GitHub als Versionsverwaltung für Softwareprojekte ist ein weiterer Vorteil. Die Workflows der GitHub Actions sind dabei flexibel, skalierbar und an Ihre Bedürfnisse individuell anpassbar.
Überblick
- Abgrenzung zu Azure DevOps-Pipelines und TeamCity
- Verknüpfung mit dem Git-Repository
- Einführung in die Struktur von Workflows in YAML
- Kernkonzepte und Workflow-Bestandteile
- Einsatz von Variablen und Secrets mithilfe der Template-Engine
- Integration in das GitHub-Webportal
- Beschränkungen und Kosten
Events und Trigger
- Repository-Events inklusive Filterung
- Externes Starten von Workflows mit
repository_dispatch
- Manuelle Ausführung
- Zeitsteuerung
Jobs und Steps
- Nebenläufige und sequenzielle Ausführung von Aufgaben
- Volle Flexibilität mit Skripten mit Bash, PowerShell u. a.
- Datenaustausch und Abhängigkeiten
- Metadaten, Variablen, Secrets und Parameter
- Modifikation von Umgebungsvariablen einzelner Schritte oder ganzer Workflows
- Ausführung von Arbeitsschritten in Container-Umgebungen
- Anwendungsfälle für Service-Container
- Nutzung vorgefertigter Actions aus dem GitHub Marketplace
- Ein- und mehrdimensionale Strategien (Matrix)
- Auswahl geeigneter Runner bspw. anhand des Betriebssystems
- Debugging und Fehlersuche
Sicherheit
- Nutzen und Einschränkungen von Secrets
- Freigaben für Repositories, Umgebungen und Organisationen
- Ausführungsberechtigungen für Steps und Workflows
- Personal Access Tokens
Continuous Integration / Delivery Workflows
- Continuous Integration am Beispiel einer .NET-Anwendung
- Erstellung von Artefakten
- Ausführung automatisierter Tests
- Erstellung von Docker Images
- Zuweisung von Metadaten und Tags
- Authentifizierung gegenüber einer Image Registry wie z. B. Docker Hub
- Nutzung von
docker buildx
, bspw. zur Erzeugung von Images für mehrere Prozessorarchitekturen
- Continuous Delivery mit GitHub Actions erreichen
- Deployments in Kubernetes mit Helm
- Copy-Deployment per
rsync
und SFTP - Erzeugen von GitHub Releases
- Praktische Beispiele für GitOps
GitHub Packages
- Einfach zu integrierender Artefaktspeicher für bspw. NuGet-, NPM- und Maven-Pakete
- Vergabe von Zugriffsberechtigungen
- GitHub Container Registry
- Authentifizierung
- Lesenden und schreibenden Zugriff ermöglichen
- Image-Sichtbarkeit und -Sicherheit
Custom Actions
- Einrichtung eines Repositories mit geeigneter Struktur
- Verarbeitung von Ein- und Ausgabeparametern
- JavaScript-, Docker-basierte und Composite Actions
- Versionierung und Veröffentlichung einer eigenen Action
Self-hosted Runner
- Voraussetzungen und Einsatzszenarien
- Bare Metal, VM oder Container als zugrundeliegende Infrastruktur
- Workflow-Integration
- Nutzung von
act
zur lokalen Ausführung von Actions