CI CD - Robust-Games/robust GitHub Wiki

GitHub Actions Workflows für RobustServer

Dieses Dokument beschreibt zwei zentrale GitHub Actions Workflows, die für das Projektmodul RobustServer konfiguriert sind:

  • Build: Kompiliert und verpackt den Code (ohne Tests)
  • Continuous Integration (CI): Führt Tests aus und erzeugt Coverage-Berichte

1. Build Workflow

Trigger

Der Build startet bei:

  • Push auf main oder tests (nur wenn Änderungen in diesen Pfaden vorliegen):

    • robustServer/**
    • .github/workflows/**
  • Pull Requests auf dieselben Branches und Pfade.

Job: build

Schritt Beschreibung
Checkout Repo Klont das Repository in den Runner.
Set up JDK 21 Installiert Java 21 (Temurin) für den Build-Prozess.
Gradle Wrapper ausführbar machen Macht ./gradlew ausführbar.
Projekt bauen (ohne Tests) Baut das Projekt mit ./gradlew build -x test.
Build-Artefakte hochladen Lädt die erzeugte .jar-Datei als Artefakt in GitHub hoch.
Java-Version prüfen Gibt die verwendete Java-Version aus.
Spring Boot Version prüfen Listet die Spring-Boot-Abhängigkeit im Projekt auf.
Dependency Updates prüfen Prüft verfügbare Updates für Dependencies via Plugin com.github.ben-manes.versions.

Zweck

Sicherstellung, dass der Code ohne Fehler kompiliert, sowie Überblick über verwendete Java- und Spring-Versionen und Abhängigkeitsstatus.


2. Continuous Integration (Test & Coverage)

Trigger

Der CI-Testworkflow wird bei denselben Bedingungen wie der Build ausgelöst, aber mit Pfad- und Branch-Unterscheidung für RobustServer (Großschreibung beachten):

  • Push oder Pull Request auf main oder tests
  • Änderungen in:
    • RobustServer/**
    • .github/workflows/**

Job: test

Schritt Beschreibung
Checkout Repo Klont das Repository.
Set up JDK 21 Installiert Java 21 (Temurin).
Gradle Wrapper ausführbar machen Macht ./gradlew ausführbar.
Tests ausführen Führt Unit- und Integrationstests mit ./gradlew test aus.
Coverage-Report erzeugen Erzeugt Code-Coverage-Bericht mit jacocoTestReport.
Coverage-Report hochladen Lädt den Coverage-Report (build/reports/jacoco/test/html) als Artefakt hoch.

Zweck

Automatisches Testen des Codes und Erfassung der Testabdeckung zur Qualitätssicherung.

GitHub Actions Workflows für RobustServer

Dieses Dokument beschreibt zwei zentrale GitHub Actions Workflows, die für das Projektmodul RobustServer konfiguriert sind:

  • Build: Kompiliert und verpackt den Code (ohne Tests)
  • Continuous Integration (CI): Führt Tests aus und erzeugt Coverage-Berichte

1. Build Workflow

Trigger

Der Build startet bei:

  • Push auf main oder tests (nur wenn Änderungen in diesen Pfaden vorliegen):

    • robustServer/**
    • .github/workflows/**
  • Pull Requests auf dieselben Branches und Pfade.

Job: build

Schritt Beschreibung
Checkout Repo Klont das Repository in den Runner.
Set up JDK 21 Installiert Java 21 (Temurin) für den Build-Prozess.
Gradle Wrapper ausführbar machen Macht ./gradlew ausführbar.
Projekt bauen (ohne Tests) Baut das Projekt mit ./gradlew build -x test.
Build-Artefakte hochladen Lädt die erzeugte .jar-Datei als Artefakt in GitHub hoch.
Java-Version prüfen Gibt die verwendete Java-Version aus.
Spring Boot Version prüfen Listet die Spring-Boot-Abhängigkeit im Projekt auf.
Dependency Updates prüfen Prüft verfügbare Updates für Dependencies via Plugin com.github.ben-manes.versions.

Zweck

Sicherstellung, dass der Code ohne Fehler kompiliert, sowie Überblick über verwendete Java- und Spring-Versionen und Abhängigkeitsstatus.


2. Continuous Integration (Test & Coverage)

Trigger

Der CI-Testworkflow wird bei denselben Bedingungen wie der Build ausgelöst, aber mit Pfad- und Branch-Unterscheidung für RobustServer (Großschreibung beachten):

  • Push oder Pull Request auf main oder tests
  • Änderungen in:
    • RobustServer/**
    • .github/workflows/**

Job: test

Schritt Beschreibung
Checkout Repo Klont das Repository.
Set up JDK 21 Installiert Java 21 (Temurin).
Gradle Wrapper ausführbar machen Macht ./gradlew ausführbar.
Tests ausführen Führt Unit- und Integrationstests mit ./gradlew test aus.
Coverage-Report erzeugen Erzeugt Code-Coverage-Bericht mit jacocoTestReport.
Coverage-Report hochladen Lädt den Coverage-Report (build/reports/jacoco/test/html) als Artefakt hoch.

Zweck

Automatisches Testen des Codes und Erfassung der Testabdeckung zur Qualitätssicherung.


3. Continuous Integration (CI) für robustClient & robustServer (Tests + Coverage)

Trigger

  • Push oder Pull Request auf main oder tests
  • Änderungen in:
    • robustClient/**
    • robustServer/**
    • .github/workflows/**

Job: test

Schritt Beschreibung
Checkout Repo Klont das Repository.
Set up JDK 21 Installiert Java 21 (Temurin).
Gradle Wrapper ausführbar machen (robustClient) Macht ./robustClient/gradlew ausführbar.
Tests ausführen (robustClient) Führt Tests mit ./robustClient/gradlew test aus.
Coverage-Report erzeugen (robustClient) Erzeugt Coverage mit ./robustClient/gradlew jacocoTestReport.
Coverage-Report hochladen (robustClient) Lädt Coverage-Report robustClient/build/reports/jacoco/test/html hoch.
Gradle Wrapper ausführbar machen (robustServer) Macht ./robustServer/gradlew ausführbar.
Tests ausführen (robustServer) Führt Tests mit ./robustServer/gradlew test aus.
Coverage-Report erzeugen (robustServer) Erzeugt Coverage mit ./robustServer/gradlew jacocoTestReport.
Coverage-Report hochladen (robustServer) Lädt Coverage-Report robustServer/build/reports/jacoco/test/html hoch.

Zweck

Automatisches Testen und Coverage-Erfassung beider Module für ganzheitliche Qualitätssicherung.


4. Continuous Delivery (CD): Automatisches Release bei Push auf main

Trigger

  • Push auf Branch main

Job: build-and-release

Schritt Beschreibung
Checkout Repo Klont das Repository.
Set up JDK 21 Installiert Java 21 (Temurin).
Gradle Wrapper ausführbar machen (robustServer) Macht ./robustServer/gradlew ausführbar.
Projekt bauen (robustServer) Baut das Projekt mit ./robustServer/gradlew build.
Commit-Nachricht lesen Liest die letzte Commit-Message für das Release-Comment aus.
GitHub Release erstellen Erstellt ein Release mit dem Commit-Hash als Tag und der Commit-Message als Beschreibung.
Release-Artefakt hochladen Lädt die erzeugte .jar aus robustServer/build/libs/ als Release-Asset hoch.

Zweck

Automatische Paketierung und Veröffentlichung neuer Releases bei jedem Push auf main inklusive Release-Notes aus Commit-Kommentaren.