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>
|
||||
<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>
|
||||
|
||||
Reference in New Issue
Block a user