From 146734fd196447637062f8daf76a3278f4ead47b Mon Sep 17 00:00:00 2001 From: Ulli Hafner Date: Fri, 24 Oct 2025 18:43:46 +0200 Subject: [PATCH 1/5] Fix typos --- doc/Externe-Tool-Integration.md | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/doc/Externe-Tool-Integration.md b/doc/Externe-Tool-Integration.md index fc12d0b7..43c2c888 100644 --- a/doc/Externe-Tool-Integration.md +++ b/doc/Externe-Tool-Integration.md @@ -5,24 +5,20 @@ Zur Unterstützung des Entwicklungsworkflows sind bereits verschiedene externe T ## Automatische Aktualisierung der Abhängigkeiten Die Abhängigkeiten des Projektes (Dependencies) werden über Maven verwaltet und sind im [POM](../pom.xml) konfiguriert. -Um das Projekt immer auf dem laufenden Stand zu halten, ist die GitHub App [Dependabot](https://dependabot.com) -aktiv geschaltet: diese prüft automatisch, on neue Versionen einer Bibliothek (oder eines Maven Plugins) zur Verfügung -stehen. Ist dies der Fall, erstellt der Roboter automatisch einen +Um das Projekt immer auf dem laufenden Stand zu halten, ist die GitHub App [Dependabot](https://dependabot.com) aktiv geschaltet: diese prüft automatisch, on neue Versionen einer Bibliothek (oder eines Maven Plugins) zur Verfügung stehen. +Ist dies der Fall, erstellt der Roboter automatisch einen [Pull Request](https://github.com/uhafner/codingstyle/pulls), der die Version aktualisiert. ## Automatisierte Generierung eines Changelog -Damit der Nutzer des Projekts immer über alle Änderungen im Projekt im Bilde ist, ist die GitHub App -[Release Drafter](https://github.com/toolmantim/release-drafter) aktiviert. Diese erstellt automatisch neue Changelog -Einträge im [GitHub Releases Bereich](https://github.com/uhafner/codingstyle/releases). Diese Einträge werden -aus den Titeln der Pull Requests generiert, d.h. jede Änderung am Projekt sollte über Pull Requests erfolgen und nicht -über direkte Git Commits - dies entspricht auch dem Vorgehen des [GitHub Flows](https://guides.github.com/introduction/flow/). +Damit der Nutzer des Projekts immer über alle Änderungen im Projekt im Bild ist, ist die GitHub App [Release Drafter](https://github.com/toolmantim/release-drafter) aktiviert. +Diese erstellt automatisch neue Changelog Einträge im [GitHub Releases Bereich](https://github.com/uhafner/codingstyle/releases). +Diese Einträge werden aus den Titeln der Pull Requests generiert, d. h. jede Änderung am Projekt sollte über Pull Requests erfolgen und nicht über direkte Git Commits – dies entspricht auch dem Vorgehen des [GitHub Flows](https://guides.github.com/introduction/flow/). ## Statische Analyse von Pull Requests mit CheckStyle und PMD -Wie bereits im Abschnitt [Continuous Integration](Continuous-Integration.md) erwähnt, gibt es keinen öffentlichen -Service, ein GitHub Projekt mit Jenkins automatisiert zu bauen. Für GitHub Actions gibt es diesen Service, aber -die Visualisierung der Ergebnisse der statischen Analyse wird leider nicht unterstützt. +Wie bereits im Abschnitt [Continuous Integration](Continuous-Integration.md) erwähnt, gibt es keinen öffentlichen Service, ein GitHub Projekt mit Jenkins automatisiert zu bauen. +Für GitHub Actions gibt es diesen Service, aber die Visualisierung der Ergebnisse der statischen Analyse wird leider nicht unterstützt. ## Security Analyse von Pull Requests From 72e3192b396ef31f64748ece1ac352bb7fb004ba Mon Sep 17 00:00:00 2001 From: Ulli Hafner Date: Wed, 5 Nov 2025 13:20:03 +0100 Subject: [PATCH 2/5] Enforce the usage of Java >= 21 when building the project --- pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fafa8172..94123216 100644 --- a/pom.xml +++ b/pom.xml @@ -48,6 +48,7 @@ UTF-8 ${source.encoding} 17 + 21 ${project.groupId}.codingstyle @@ -721,7 +722,7 @@ - ${java.version} + ${java.jdk.version} From 850ec00dc8efe6f84e4c7b9c8c73c38774ae22fe Mon Sep 17 00:00:00 2001 From: Ulli Hafner Date: Wed, 5 Nov 2025 13:26:08 +0100 Subject: [PATCH 3/5] Build project only for Java 21 and 25 --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3da1bb99..dc25df41 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,7 @@ jobs: strategy: matrix: platform: [ubuntu-latest, macos-latest, windows-latest] - jdk: [17, 21, 25] + jdk: [21, 25] runs-on: ${{ matrix.platform }} name: on ${{ matrix.platform }} with JDK ${{ matrix.jdk }} From 4652c28e3a5bdc1910038b5d68ab341fb5642f91 Mon Sep 17 00:00:00 2001 From: Ulli Hafner Date: Wed, 5 Nov 2025 13:27:27 +0100 Subject: [PATCH 4/5] Use JDK 25 when building the project --- .github/workflows/codeql.yml | 4 ++-- .github/workflows/quality-monitor-build.yml | 4 ++-- .github/workflows/update-badges.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index c8061253..f08587d9 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -25,11 +25,11 @@ jobs: steps: - uses: actions/checkout@v5 - - name: Setup Java + - name: Setup JDK uses: actions/setup-java@v5 with: distribution: temurin - java-version: 21 + java-version: 25 cache: maven - name: Set up Maven diff --git a/.github/workflows/quality-monitor-build.yml b/.github/workflows/quality-monitor-build.yml index 4d88b896..80956180 100644 --- a/.github/workflows/quality-monitor-build.yml +++ b/.github/workflows/quality-monitor-build.yml @@ -11,11 +11,11 @@ jobs: steps: - name: Checkout PR uses: actions/checkout@v5 - - name: Set up JDK 21 + - name: Set up JDK uses: actions/setup-java@v5 with: distribution: 'temurin' - java-version: 21 + java-version: 25 check-latest: true cache: 'maven' - name: Set up Maven diff --git a/.github/workflows/update-badges.yml b/.github/workflows/update-badges.yml index ca53baa6..325d31c4 100644 --- a/.github/workflows/update-badges.yml +++ b/.github/workflows/update-badges.yml @@ -13,11 +13,11 @@ jobs: steps: - uses: actions/checkout@v5 - - name: Set up JDK 21 + - name: Set up JDK uses: actions/setup-java@v5 with: distribution: 'temurin' - java-version: '21' + java-version: '25' check-latest: true cache: 'maven' - name: Set up Maven From d3412df94d5df16f514489ee94fab28cfff1f654 Mon Sep 17 00:00:00 2001 From: Ulli Hafner Date: Wed, 5 Nov 2025 13:45:31 +0100 Subject: [PATCH 5/5] Fix description of CI pipeline --- doc/Continuous-Integration.md | 2 +- doc/Externe-Tool-Integration.md | 30 ++++++++++++++---------------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/doc/Continuous-Integration.md b/doc/Continuous-Integration.md index f9daeb7a..180e5864 100644 --- a/doc/Continuous-Integration.md +++ b/doc/Continuous-Integration.md @@ -27,7 +27,7 @@ U. a. sind die folgenden Plugins vorkonfiguriert: Die Konfiguration der Continuous Integration in GitHub Actions ist sehr [einfach](../.github/workflows/ci.yml) über eine Pipeline möglich. Da der gesamte Build über Maven automatisiert ist, besteht die Pipeline eigentlich nur aus einem Maven Aufruf, der das Projekt baut, alle Tests (Unit und Integrationstests) ausgeführt, die statische Code Analyse durchführt und schließlich die Coverage misst. -GitHub Actions bietet auch die Möglichkeit, Matrix Builds durchzuführen: D. h., der Build wird z. B. auf den Plattformen Linux, Windows und macOS oder mit den Java-Versionen 17 und 21 parallel durchgeführt. +GitHub Actions bietet auch die Möglichkeit, Matrix Builds durchzuführen: D. h., der Build wird z. B. auf den Plattformen Linux, Windows und macOS oder mit den Java-Versionen 21 und 25 parallel durchgeführt. Ein Beispiel für die Konfiguration eines Matrix Builds ist in der Datei [ci.yml](../.github/workflows/ci.yml) zu finden. Wenn gewünscht, können die Ergebnisse der statischen Codeanalyse und der Code Coverage Tools auch direkt im Commit oder Pull-Request angezeigt werden. diff --git a/doc/Externe-Tool-Integration.md b/doc/Externe-Tool-Integration.md index 43c2c888..d0638ff9 100644 --- a/doc/Externe-Tool-Integration.md +++ b/doc/Externe-Tool-Integration.md @@ -5,27 +5,25 @@ Zur Unterstützung des Entwicklungsworkflows sind bereits verschiedene externe T ## Automatische Aktualisierung der Abhängigkeiten Die Abhängigkeiten des Projektes (Dependencies) werden über Maven verwaltet und sind im [POM](../pom.xml) konfiguriert. -Um das Projekt immer auf dem laufenden Stand zu halten, ist die GitHub App [Dependabot](https://dependabot.com) aktiv geschaltet: diese prüft automatisch, on neue Versionen einer Bibliothek (oder eines Maven Plugins) zur Verfügung stehen. -Ist dies der Fall, erstellt der Roboter automatisch einen -[Pull Request](https://github.com/uhafner/codingstyle/pulls), der die Version aktualisiert. +Um das Projekt immer auf dem laufenden Stand zu halten, ist die GitHub App [Dependabot](https://dependabot.com) aktiv geschaltet. +Diese prüft automatisch, on neue Versionen einer Bibliothek (oder eines Maven Plugins) zur Verfügung stehen. +Ist dies der Fall, erstellt der Roboter automatisch einen [Pull Request](https://github.com/uhafner/codingstyle/pulls), der die Version aktualisiert. ## Automatisierte Generierung eines Changelog -Damit der Nutzer des Projekts immer über alle Änderungen im Projekt im Bild ist, ist die GitHub App [Release Drafter](https://github.com/toolmantim/release-drafter) aktiviert. +Damit die Nutzer des Projekts immer über alle Änderungen im Projekt im Bild sind, ist die GitHub App [Release Drafter](https://github.com/toolmantim/release-drafter) aktiviert. Diese erstellt automatisch neue Changelog Einträge im [GitHub Releases Bereich](https://github.com/uhafner/codingstyle/releases). -Diese Einträge werden aus den Titeln der Pull Requests generiert, d. h. jede Änderung am Projekt sollte über Pull Requests erfolgen und nicht über direkte Git Commits – dies entspricht auch dem Vorgehen des [GitHub Flows](https://guides.github.com/introduction/flow/). +Diese Einträge werden automatisch aus den Titeln der Pull Requests generiert, d. h. jede Änderung am Projekt sollte über Pull Requests erfolgen und nicht über direkte Git Commits – dies entspricht auch dem Vorgehen des [GitHub Flows](https://guides.github.com/introduction/flow/). -## Statische Analyse von Pull Requests mit CheckStyle und PMD +## Continuous Integration (inklusive Überwachung von Quality Gates) -Wie bereits im Abschnitt [Continuous Integration](Continuous-Integration.md) erwähnt, gibt es keinen öffentlichen Service, ein GitHub Projekt mit Jenkins automatisiert zu bauen. -Für GitHub Actions gibt es diesen Service, aber die Visualisierung der Ergebnisse der statischen Analyse wird leider nicht unterstützt. +Wie bereits im Abschnitt [Continuous Integration](Continuous-Integration.md) erwähnt, wird das Projekt bei jeder Änderung mit einer GitHub Pipeline automatisiert gebaut. +Diese [Pipeline](https://github.com/uhafner/codingstyle/blob/main/.github/workflows/ci.yml) läuft auf Rechnern von GitHub und führt einen Build unter JDK 21 und 25 aus. +Aktuell wird der Build auf virtualisierten Rechnern der Betriebssysteme Linux, Windows und macOS durchgeführt. +Anschließend werden die Build Ergebnisse mit meinem [Quality Monitor](https://github.com/uhafner/quality-monitor) analysiert. +Dieser Service sammelt die Ergebnisse der statischen Code-Analyse (CheckStyle, PMD, SpotBugs) und der Code-Coverage (JaCoCo) und stellt diese als Kommentar im Pull Request dar. +Anschließend werden die Quality Gates überprüft: Werden die definierten Qualitätskriterien nicht erfüllt, so schlägt der Build fehl. -## Security Analyse von Pull Requests +## Sicherheitsanalyse von Pull Requests -Zusätzlich zur statischen Analyse wird ein Pull Request auf Sicherheitslücken untersucht. Dies erfolgt über die GitHub -App [LGTM](https://lgtm.com). - -## Bewertung der Code Coverage - -Die Code Coverage der Unit-Tests wird ebenfalls nach jeder Änderung (bzw. für jeden Pull Request) an den Service -[Codecov](https://app.codecov.io/gh/uhafner/codingstyle) weitergeleitet, der die Resultate grafisch visualisiert. +Zusätzlich zur statischen Analyse wird ein Pull Request auf Sicherheitslücken untersucht. Dies erfolgt über die GitHub App [CodeQL](https://codeql.github.com/).