Add GitHub Actions for Maven setup, JUnit reporting, and build analysis with SonarCloud.

This commit is contained in:
2026-03-08 10:33:30 +01:00
parent 233c3988bc
commit d1e2a78f24
4 changed files with 142 additions and 1 deletions
+35
View File
@@ -0,0 +1,35 @@
name: Publish JUnit Report (Short Names)
description: Normalize JUnit XML report names and publish a summary-only test report.
inputs:
token:
description: GitHub token for creating the check run.
required: true
report-name:
description: Name shown for the test report.
required: false
default: Summary of JUnit Tests
runs:
using: composite
steps:
- name: Normalize JUnit report names
shell: bash
run: |
mkdir -p junit-short
shopt -s globstar nullglob
for f in **/target/*-reports/TEST-*.xml; do
base="$(basename "$f")"
short="${base#TEST-}"
short="${short%.xml}"
cp "$f" "junit-short/${short}"
done
- name: Publish Test Report
uses: dorny/test-reporter@v2
with:
token: ${{ inputs.token }}
name: ${{ inputs.report-name }}
path: "*"
reporter: java-junit
only-summary: true
working-directory: "junit-short"
@@ -0,0 +1,43 @@
name: "Setup Maven with GitHub Packages"
description: "Sets up JDK, caches Maven dependencies, and configures GitHub Packages for Maven repositories."
inputs:
java-version:
description: "Java version to install"
default: "17"
required: true
java-distribution:
description: "Java distribution to use"
default: "corretto"
runs:
using: "composite"
steps:
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: ${{ inputs.java-distribution }}
java-version: ${{ inputs.java-version }}
- name: Cache Maven Repository
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Set up Maven with GitHub Packages
run: |
echo "<settings>
<servers>
<server>
<id>github-cloudflaredns</id>
<username>th-schwarz</username>
<password>${{ secrets.GITHUB_TOKEN }}</password>
</server>
</servers>
</settings>" > ~/.m2/settings.xml
shell:
bash
+55
View File
@@ -0,0 +1,55 @@
name: Build and Analyse
on:
push:
branches:
- develop
- feature*
pull_request:
types: [ opened, synchronize, reopened ]
defaults:
run:
shell: bash
jobs:
build-and-analyse:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: Setup Java and Maven
uses: ./.github/actions/setup-java-maven
- name: Set up Maven with GitHub Packages
run: |
mkdir -p ~/.m2
cat > ~/.m2/settings.xml << 'EOF'
<settings>
<servers>
<server>
<id>github-cloudflaredns</id>
<username>th-schwarz</username>
<password>${{ secrets.GITHUB_TOKEN }}</password>
</server>
</servers>
</settings>
EOF
- name: Build and analyze with SonarCloud
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
CF_API_TOKEN: ${{ secrets.CF_API_TOKEN }}
run: mvn -B -DtestClasspath=src/test/ verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dsonar.projectKey=th-schwarz_DynDRest
- name: Publish Test Report
uses: ./.github/actions/publish-report/
if: ${{ always() }}
with:
token: ${{ secrets.GITHUB_TOKEN }}
report-name: Summary of JUnit Tests
+9 -1
View File
@@ -42,6 +42,15 @@
<junit5.version>5.14.2</junit5.version>
<mockito-junit5.version>5.21.0</mockito-junit5.version>
<!-- sonarqube -->
<sonar.organization>th-schwarz</sonar.organization>
<sonar.host.url>https://sonarcloud.io</sonar.host.url>
<sonar.sourceEncoding>${file.encoding}</sonar.sourceEncoding>
<sonar.projectKey>th-schwarz_CloudflareDNS-java</sonar.projectKey>
<sonar.projectName>CloudflareDNS-java</sonar.projectName>
<sonar.branch.name>develop</sonar.branch.name>
<sonar.test.exclusions>src/test/java/**/*</sonar.test.exclusions>
<lombok-maven-plugin.version>1.18.20.0</lombok-maven-plugin.version>
</properties>
@@ -273,7 +282,6 @@
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>