diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index f63e4e14..17d2aacc 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -13,6 +13,7 @@ on: branches: [ "main" ] pull_request: branches: [ "main" ] + types: [opened, synchronize, reopened] jobs: build: @@ -25,14 +26,37 @@ jobs: steps: - uses: actions/checkout@v4 + with: + fetch-depth: 0 # Shallow clones should be disabled for better SonarCloud analysis + - name: Set up JDK 17 uses: actions/setup-java@v4 with: java-version: '17' - distribution: 'temurin' + distribution: 'zulu' cache: maven + + - name: Cache SonarCloud packages + uses: actions/cache@v4 + with: + path: ~/.sonar/cache + key: ${{ runner.os }}-sonar + restore-keys: ${{ runner.os }}-sonar + + - name: Cache Maven packages + uses: actions/cache@v4 + with: + path: ~/.m2 + key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-m2 + - name: Build with Maven - run: mvn -B verify -Pmetrics --file pom.xml + run: mvn -B install -Pmetrics --file pom.xml + + - name: SonarCloud Analysis + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + run: mvn -B org.sonarsource.scanner.maven:sonar-maven-plugin:sonar --file pom.xml - name: Upload JaCoCo HTML report (processor) if: always() @@ -52,19 +76,18 @@ jobs: - name: Upload test results to Codecov (processor) if: always() - uses: codecov/test-results-action@v1 + uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1 with: token: ${{ secrets.CODECOV_TOKEN }} files: | processor/target/surefire-reports/*.xml processor/target/failsafe-reports/*.xml - if-no-files-found: warn fail_ci_if_error: true verbose: false - name: Upload coverage to Codecov (processor) if: always() - uses: codecov/codecov-action@v5 + uses: codecov/codecov-action@015f24e6818733317a2da2edd6290ab26238649a # v5.0.7 with: fail_ci_if_error: true files: processor/target/site/jacoco/jacoco.xml diff --git a/pom.xml b/pom.xml index 55c7ed25..e1ba8ab2 100644 --- a/pom.xml +++ b/pom.xml @@ -67,6 +67,17 @@ ${java.version} ${java.version} + + java-helpers_simple-builders + java-helpers + Simple Builders + https://sonarcloud.io + ${project.basedir}/core/target/classes,${project.basedir}/processor/target/classes + ${project.basedir}/processor/target/site/jacoco/jacoco.xml + **/example/** + + **/*Mapper*.java,**/processor/dtos/**,**/generated/** + 3.13.0 3.1.1 @@ -76,6 +87,7 @@ 3.2.7 0.8.0 2.25 + 5.2.0.4988 @@ -106,6 +118,13 @@ fmt-maven-plugin ${plugin.code-format.version} + + + + org.sonarsource.scanner.maven + sonar-maven-plugin + ${plugin.sonar.version} + diff --git a/processor/pom.xml b/processor/pom.xml index 3c706e0c..52904c08 100644 --- a/processor/pom.xml +++ b/processor/pom.xml @@ -309,11 +309,6 @@ ${project.build.directory}/jacoco.exec ${project.reporting.outputDirectory}/jacoco - - html - xml - csv - **/generated/** diff --git a/sonar-project.properties b/sonar-project.properties new file mode 100644 index 00000000..a243bda1 --- /dev/null +++ b/sonar-project.properties @@ -0,0 +1,23 @@ +# SonarCloud Configuration +sonar.projectKey=java-helpers_simple-builders +sonar.organization=java-helpers + +# Project Information +sonar.projectName=Simple Builders +sonar.projectVersion=0.2.0 + +# Source and Test Directories +sonar.sources=core/src/main/java,processor/src/main/java +sonar.tests=processor/src/test/java +sonar.java.binaries=core/target/classes,processor/target/classes +sonar.java.test.binaries=processor/target/test-classes + +# Coverage +sonar.coverage.jacoco.xmlReportPaths=processor/target/site/jacoco/jacoco.xml + +# Exclusions +sonar.exclusions=**/generated/**,example/** +sonar.coverage.exclusions=**/*Mapper*.java,**/processor/dtos/**,**/generated/**,example/** + +# Java Version +sonar.java.source=17