Add GitHub Actions for Maven setup, JUnit reporting, and build analysis with SonarCloud.
This commit is contained in:
@@ -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
|
||||||
@@ -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
|
||||||
@@ -42,6 +42,15 @@
|
|||||||
<junit5.version>5.14.2</junit5.version>
|
<junit5.version>5.14.2</junit5.version>
|
||||||
<mockito-junit5.version>5.21.0</mockito-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>
|
<lombok-maven-plugin.version>1.18.20.0</lombok-maven-plugin.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
@@ -273,7 +282,6 @@
|
|||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
Reference in New Issue
Block a user