Sprint 2 – Ausbau CI/CD Pipeline und App Release

Zeitraum: 24.11.2025 – 15.12.2025
Team: Miguel Schneider
Sprint-Ziel: Eine durchgängige CI/CD-Pipeline bereitstellen, welche die Anwendung baut, versioniert und ein deploybares Artefakt erzeugt. Zusätzlich soll die Anwendung als Kubernetes-Deployment und -Service im Minikube bereitgestellt werden, sodass am Ende des Sprints ein erster funktionsfähiger App-Release im Cluster erreichbar und testbar ist.


Kontext & Fokus

  • Ausgangslage:
    Im ersten Sprint wurden die Grundlagen für die CI/CD-Pipeline gelegt, jedoch ist der vollständige Build- und Artefaktprozess noch nicht abgeschlossen. Die Anwendung wurde bisher nicht in einer Kubernetes-Umgebung bereitgestellt, sodass kein durchgängiger End-to-End-Prozess existiert. Für den Projektfortschritt ist es notwendig, die Pipeline zu vervollständigen und erstmals ein funktionsfähiges Deployment in Minikube bereitzustellen.

  • Fokus dieses Sprints:

    • Erweiterung und Fertigstellung der CI/CD-Pipeline aus Sprint 1.
    • Sicherstellen, dass die Pipeline ein versioniertes, deploybares Artefakt erzeugt.
    • Erstellung eines Kubernetes Deployments für die Applikation.
    • Aufbau eines Kubernetes Services zur internen und externen Erreichbarkeit der App.
    • Bereitstellung einer ersten funktionierenden Release-Version im Minikube-Cluster.
    • Durchführung erster manueller Funktionstests (Smoke-Tests) direkt im Cluster.
    • Dokumentation der Deployment-Schritte und Testresultate.

Sprint Backlog

Backlog gemäss User Stories des Meilenstein 2 - 2. Sprint

# User Story Priorität Story Points Akzeptanzkriterien erfüllt?
#7 Implement Test Pipeline with GitHub Actions Must have 5  
#8 feat: Implement Build pipeline with GitHub Actions Must have 5  
#9 feat: Implement upload artefact to Azure DevOps Should have 3  
#10 Create a Kubernetes Deployment for the Application Must have 5  
#11 Provide Internal Access via a Kubernetes Service Must have 5  
#12 Enable External Access to the App in Minikube Must have 3  
#13 Extend CI/CD to Produce Deployment-Ready Artefacts Should have 5  

Bild Roadmap des Sprints Abbildung der Roadmap des 2. Sprints


Aufgaben (Tasks)

Task-ID Story # Task-Beschreibung Verantwortlich Status
T-1 7 GitHub Actions Test-Pipeline (pytest, ruff ) einrichten Miguel Done
T-2 7 CI-Abbruch bei Lint-/Testfehler konfigurieren Miguel Done
T-3 8 Dockerfile für Flask Anwendung erstellen Miguel Done
T-4 8 Automatisierter Docker Build & Push in GitHub Actions einrichten Miguel Done
T-5 9 Python-Artefakt (Package) erstellen Miguel Done
T-6 9 Automatischen Upload des Artefakts in Azure DevOps konfigurieren Miguel Done
T-7 10 Kubernetes Deployment YAML für App erstellen Miguel Done
T-8 10 Deployment lokal in Minikube testen Miguel Done
T-9 11 Kubernetes Service für interne Erreichbarkeit konfigurieren Miguel Done
T-10 11 Service-Port ↔ TargetPort Zuordnung testen Miguel Done
T-11 12 NGINX Ingress Controller in Minikube aktivieren Miguel Done
T-12 12 Ingress YAML für externen Zugriff erstellen Miguel Done
T-13 12 Externen Zugriff (Ingress Routing) debuggen und validieren Miguel Done
T-14 13 CI/CD erweitern: Deployment-ready Artefakte erzeugen Miguel InProgress
T-15 13 Deployment-Oberfläche & Artefakt-Flow dokumentieren Miguel Tod

Sprint Review

Datum: 15.12.2025
Teilnehmer: Miguel

Erreichte Ergebnisse

  • Die offenen Issues aus Sprint 1 wurden erfolgreich aufgearbeitet und abgeschlossen.

  • Die ursprüngliche Story Issue #6 wurde im aktuellen Sprint sinnvoll in drei Sub-Issues (Issues #7, #8, #9) aufgeteilt, um eine genauere Aufwandsabschätzung und bessere Story-Point-Vergabe zu ermöglichen.
  • Es wurde eine funktionierende CI/CD-Pipeline aufgebaut, welche automatisiert:
    • Syntax-Tests (Linting mit Ruff und isort)
    • Smoke-Tests
      ausführt.
  • Ein Docker-Artefakt der Applikation wird automatisiert erstellt und in Docker Hub veröffentlicht und kann von dort aus für Deployments bezogen werden.
  • Zusätzlich wird als Bonus ein Python-Artefakt der Applikation in Azure DevOps bereitgestellt.
  • Eine Versionierungsstrategie wurde eingeführt, bei der:
    • pro Push automatisch eine Development-Version erzeugt wird,
    • eine separate Release-Version vorbereitet ist und im nächsten Sprint finalisiert wird.
  • Die Anwendung ist erfolgreich containerisiert und kann in der Zielumgebung betrieben werden.

Bild des Images in Dockerhub Bild aus Dockerhub

Status aller ressourcen im Cluster Bild des Clusters in Minikube

Offene Punkte / Nicht erreichte Ziele

  • Die Dokumentation konnte im aktuellen Sprint nicht vollständig nachgeführt werden, da der Fokus stark auf der technischen Umsetzung sowie auf CI/CD- und Infrastruktur-Themen lag.
  • Der Aufbau und die Stabilisierung der CI-Pipeline (insbesondere Linting mit Ruff und isort) haben mehr Zeit als geplant beansprucht.
  • Aktuell besteht in der Applikation noch ein Problem beim Login, da die verwendeten Zertifikate noch nicht korrekt funktionieren.
  • Die Behebung des Login- und Zertifikatsproblems ist bereits analysiert und wird gezielt im kommenden Sprint umgesetzt.
  • Die finale Release-Versionierung ist vorbereitet, aber noch nicht produktiv umgesetzt.

Retrospektive

Datum: 15.12.2025
Methode: Sailboat - Segelschiff

Segelschiff-retro Retrospektive Sprint 2 nach der Segelschiffmethode

Verbesserungs-Massnahmen (Action Items)

# Massnahme Verantwortlich Ziel-Sprint Status
1 Login-Problem beheben und Zertifikats-Handling in der App stabilisieren Miguel Sprint 3 Offen
2 Technische Dokumentation (CI/CD, K8s, Deployment-Flow) nachführen Miguel Sprint 3 Offen
3 Release-Versionierung final umsetzen und dokumentieren Miguel Sprint 3 Offen
4 Deployment-Ablauf standardisieren (Image → Cluster → Ingress) Miguel Sprint 3 Offen

Zusammenfassung des Sprints

  • Sprint-Ziel erreicht?
    Das Sprint-Ziel wurde grösstenteils erreicht. Die geplanten technischen Grundlagen im Bereich CI/CD, Containerisierung und Kubernetes-Deployment konnten erfolgreich umgesetzt werden. Einzelne Themen (Dokumentation und Login-Problem) wurden bewusst in den nächsten Sprint verschoben.

  • Wichtigste Ergebnisse:
    • Aufbau einer stabilen CI/CD-Pipeline mit automatisierten Syntax- und Smoke-Tests
    • Erstellung und Veröffentlichung eines Docker-Artefakts auf Docker Hub
    • Bereitstellung eines zusätzlichen Python-Artefakts in Azure DevOps
    • Erfolgreiche Containerisierung und Deployment der Applikation in Minikube
    • Einführung einer automatischen Versionierung für Development-Builds
    • Aufteilung einer zu grossen Story in mehrere Sub-Issues zur besseren Planung
  • Impact auf das Gesamtprojekt:
    Der Sprint hat eine zentrale technische Basis für das Projekt geschaffen. Durch die automatisierten Pipelines und die funktionierende Kubernetes-Infrastruktur ist das Projekt nun skalierbar, reproduzierbar und bereit für weitere funktionale Erweiterungen sowie für die Einführung eines stabilen Release-Prozesses im nächsten Sprint.