1. Slides
RevealJs Slides can be found here
2. Übersicht
Dieses Projekt wurde im Rahmen einer Präsentation über GitHub Actions entwickelt und enthält drei von mir erstellte GitHub Action-Skripte sowie Erläuterungen zu deren Funktionsweise und Einsatz.
2.1. Enthaltene Skripte
-
Build
-
Dieses Skript erstellt ein Docker-Image aus einem kleinen Maven-Java-Projekt und pusht das fertige Image in die Container Registry "ghcr.io".
-
-
Deploy
-
Hier wird das zuvor erstellte Image in einer Kubernetes-Umgebung aktualisiert.Die Bereitstellung erfolgt mittels
kubectl
und einer in den GitHub Secrets gespeichertenkubectl
-Konfigurationsdatei.
-
-
Release Artifacts
-
Dieses Skript erstellt ein Prerelease auf GitHub.Dabei werden alle Commits seit dem letzten Release zusammengefasst und mit den Commit-Nachrichten sowie dem
.jar
-Artefakt der Maven-Java-Anwendung veröffentlicht.
-
3. Gebrauch von GitHub Actions
GitHub Actions ist ein CI/CD-Tool, das automatisierte Workflows direkt in GitHub ermöglicht, um Entwicklungsprozesse wie Tests, Builds und Bereitstellungen zu beschleunigen und zu zentralisieren. Ohne GitHub Actions sind diese Prozesse oft manuell und fehleranfälliger, was mehr Zeit und Ressourcen beansprucht.
4. Was ist CI/CD?

4.1. Continuous Integration (CI)
Entwickler integrieren häufig ihre Änderungen in den Hauptzweig, wodurch Builds und Tests automatisch laufen. So werden Integrationsprobleme frühzeitig vermieden.
4.2. Continuous Delivery (CD)
Auf CI aufbauend, stellt CD sicher, dass alle Änderungen nach dem Build automatisch in eine Test- oder Produktionsumgebung gelangen und bei Bedarf jederzeit veröffentlicht werden können.
7. Quellen
-
Docker. Dockerignore-Dateien: https://docs.docker.com/build/concepts/context/#dockerignore-files
-
Quarkus-Seminar. 2024 Lab Minikube: https://quarkus-seminar.github.io/2024-lab-minikube/
-
HTL Leonding. Docker Vorlesungsnotizen: https://htl-leonding-college.github.io/docker-lecture-notes/
-
HTL Leonding. Quarkus JAR GitHub Actions Demo: https://htl-leonding-college.github.io/quarkus-jar-gh-actions-demo/
-
HTL Leonding. Quarkus JAR GitHub Actions Demo (GitHub Actions): https://htl-leonding-college.github.io/quarkus-jar-gh-actions-demo/gh-actions.html
-
HTL Leonding. Git Vorlesungsnotizen: https://htl-leonding-college.github.io/git-lecture-notes/
-
Baeldung. Maven Wrapper: https://www.baeldung.com/maven-wrapper
-
GitHub Docs. Arbeiten mit einem Container-Registry: https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry
-
GitHub Docs. Webhook-Events und Payloads: https://docs.github.com/en/webhooks/webhook-events-and-payloads#workflow_dispatch
-
GitHub Docs. Workflow-Steuerung: https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/control-the-concurrency-of-workflows-and-jobs
-
GitHub Marketplace. Push to GitHub Container Registry: https://github.com/marketplace/actions/push-to-ghcr
-
GitHub CLI. Release erstellen: https://cli.github.com/manual/gh_release_create
-
Stack Overflow. Fehler: permission denied (write package): https://stackoverflow.com/questions/69014742/github-denied-permission-denied-write-package
-
Atlassian. Kontinuierliche Integration vs. Lieferung vs. Bereitstellung: https://www.atlassian.com/continuous-delivery/principles/continuous-integration-vs-delivery-vs-deployment
-
Medium. CI/CD-Tools im Vergleich: https://medium.com/@meerzoheb/ci-cd-tools-showdown-azure-devops-vs-circleci-vs-github-actions-vs-jenkins-f79353752750
-
PlantUML: https://plantuml.com