diff --git a/.github/workflows/code-maven_java-PR_verify.yml b/.github/workflows/code-maven_java-PR_verify.yml index e022ca6..74634d6 100644 --- a/.github/workflows/code-maven_java-PR_verify.yml +++ b/.github/workflows/code-maven_java-PR_verify.yml @@ -11,6 +11,9 @@ on: - 'code/**' - '.github/workflows/code*' +env: + MAVEN_OPTS: "-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn" + jobs: unit-tests: name: Code / Verify @@ -26,6 +29,24 @@ jobs: fetch-depth: 0 ref: ${{ github.event.pull_request.head.sha }} + - name: Setup Maven Cache + uses: actions/cache@v4 + continue-on-error: true + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + + - name: Setup asdf Cache + uses: actions/cache@v4 + continue-on-error: true + with: + path: ~/.asdf/data + key: ${{ runner.os }}-asdf-${{ hashFiles('**/.tool-versions') }} + restore-keys: | + ${{ runner.os }}-asdf- + - name: Save tool-versions content run: | { @@ -34,27 +55,32 @@ jobs: echo "EOF" } >> "$GITHUB_ENV" - - name: Setup IVM environment + - name: Maven / Setup IVM environment uses: asdf-vm/actions/install@v3 with: - tool_versions: ${{ ENV.TOOL_VERSIONS }} + tool_versions: ${{ env.TOOL_VERSIONS }} - name: Setup Java environment vars working-directory: code run: | JAVA_HOME="$(asdf where java)" echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV - echo "JAVA_CACERTS_PATH=$JAVA_HOME/lib/security" >> $GITHUB_ENV - echo "JAVA_CACERTS=$JAVA_HOME/lib/security/cacerts" >> $GITHUB_ENV + + - name: Store project version + if: ${{ vars.IS_INDITEXTECH_REPO == 'true' }} + id: version + run: | + echo "app-version=$(yq -oy '.project.version' code/pom.xml)" >> "$GITHUB_OUTPUT" + echo "app-name=$(yq -oy '.project.artifactId' code/pom.xml)" >> "$GITHUB_OUTPUT" - name: Maven / Verify artifact with coverage if: ${{ !(contains(github.event.pull_request.labels.*.name, 'autopublish/snapshot-binaries')) }} working-directory: code run: | - mvn -B clean verify -DskipITs -DfailIfNoTests=false -Dmaven.test.failure.ignore=false + mvn -B clean verify -Djacoco.skip=false -DskipITs -DfailIfNoTests=false -Dmaven.test.failure.ignore=false - name: Prepare committer information and set GPG key - if: ${{ vars.IS_INDITEXTECH_REPO == 'true' }} + if: ${{ vars.IS_INDITEXTECH_REPO != 'true' }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SCM_COMMITTER_PGP_KEY: ${{ secrets.CI_GPG_SECRET_KEY }} @@ -80,7 +106,7 @@ jobs: mvn -B build-helper:parse-version versions:set \ -DnewVersion="\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.incrementalVersion}+PR${{ github.event.pull_request.number }}-SNAPSHOT" - mvn -B clean install gpg:sign org.sonatype.central:central-publishing-maven-plugin:publish -DskipITs -DfailIfNoTests=false -Dmaven.test.failure.ignore=false -Dbuild.type=snapshot --settings=.mvn/settings.xml + mvn -B clean install gpg:sign org.sonatype.central:central-publishing-maven-plugin:publish -Djacoco.skip=false -DskipITs -DfailIfNoTests=false -Dmaven.test.failure.ignore=false -Dbuild.type=snapshot --settings=.mvn/settings.xml VERSION=${{ steps.version.outputs.app-version }} VERSION=${VERSION/-SNAPSHOT}+PR${{ github.event.pull_request.number }}-SNAPSHOT @@ -103,14 +129,7 @@ jobs: create_check: false check_name: "Code / Verify" - - name: Store project version - if: ${{ vars.IS_INDITEXTECH_REPO == 'true' }} - id: version - run: | - echo "app-version=$(yq -oy '.project.version' code/pom.xml)" >> "$GITHUB_OUTPUT" - echo "app-name=$(yq -oy '.project.artifactId' code/pom.xml)" >> "$GITHUB_OUTPUT" - - - name: Setup IVM environment + - name: SonarCloud / Setup asdf tools if: ${{ vars.IS_INDITEXTECH_REPO == 'true' }} uses: asdf-vm/actions/install@v3 with: @@ -119,7 +138,7 @@ jobs: nodejs 20.10.0 maven 3.9.4 - - name: Set asdf versions for SonarCloud + - name: SonarCloud / Set asdf versions if: ${{ vars.IS_INDITEXTECH_REPO == 'true' }} working-directory: code run: | @@ -133,8 +152,6 @@ jobs: run: | JAVA_HOME="$(asdf where java)" echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV - echo "JAVA_CACERTS_PATH=$JAVA_HOME/lib/security" >> $GITHUB_ENV - echo "JAVA_CACERTS=$JAVA_HOME/lib/security/cacerts" >> $GITHUB_ENV - name: SonarCloud / Run Maven Sonar goal if: ${{ vars.IS_INDITEXTECH_REPO == 'true' }} @@ -144,6 +161,7 @@ jobs: SONAR_SCANNER_OPTS: '' working-directory: code run: | + JACOCO_REPORT_PATH="$GITHUB_WORKSPACE/code/jacoco-report-aggregate/target/site/jacoco-aggregate/jacoco.xml" mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.1.2184:sonar \ -Dsonar.projectKey=PabloCollazoCollarte_"${{ steps.version.outputs.app-name }}" \ -Dsonar.projectName="${{ steps.version.outputs.app-name }}" \ @@ -159,4 +177,5 @@ jobs: -Dsonar.qualitygate.timeout=300 \ -Dsonar.pullrequest.provider=GitHub \ -Dsonar.pullrequest.github.repository="${{ github.repository }}" \ - -Dsonar.pullrequest.github.summary_comment=true + -Dsonar.pullrequest.github.summary_comment=true \ + -Dsonar.coverage.jacoco.xmlReportPaths="$JACOCO_REPORT_PATH" diff --git a/.github/workflows/code-maven_java-sonarcloud-analysis.yml b/.github/workflows/code-maven_java-sonarcloud-analysis.yml index 329790f..425f991 100644 --- a/.github/workflows/code-maven_java-sonarcloud-analysis.yml +++ b/.github/workflows/code-maven_java-sonarcloud-analysis.yml @@ -16,6 +16,9 @@ on: types: - published +env: + MAVEN_OPTS: "-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn" + jobs: unit-tests: name: SonarCloud / Unit Tests @@ -31,7 +34,25 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 - + + - name: Setup Maven Cache + uses: actions/cache@v4 + continue-on-error: true + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + + - name: Setup asdf Cache + uses: actions/cache@v4 + continue-on-error: true + with: + path: ~/.asdf/data + key: ${{ runner.os }}-asdf-${{ hashFiles('**/.tool-versions') }} + restore-keys: | + ${{ runner.os }}-asdf- + - name: Save tool-versions content run: | { @@ -40,30 +61,28 @@ jobs: echo "EOF" } >> "$GITHUB_ENV" - - name: Setup IVM environment + - name: Maven / Setup asdf tools uses: asdf-vm/actions/install@v3 with: - tool_versions: ${{ ENV.TOOL_VERSIONS }} + tool_versions: ${{ env.TOOL_VERSIONS }} - name: Setup Java environment vars working-directory: code run: | JAVA_HOME="$(asdf where java)" echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV - echo "JAVA_CACERTS_PATH=$JAVA_HOME/lib/security" >> $GITHUB_ENV - echo "JAVA_CACERTS=$JAVA_HOME/lib/security/cacerts" >> $GITHUB_ENV - - name: Run unit tests with release event + - name: Maven / Run unit tests with release event if: github.event_name == 'release' working-directory: code run: | - mvn -B clean verify -DskipEnforceSnapshots -DskipITs -DfailIfNoTests=false -Dmaven.test.failure.ignore=false + mvn -B clean verify -Djacoco.skip=false -DskipEnforceSnapshots -DskipITs -DfailIfNoTests=false -Dmaven.test.failure.ignore=false - - name: Run unit tests + - name: Maven / Run unit tests if: github.event_name != 'release' working-directory: code run: | - mvn -B clean verify -DskipITs -DfailIfNoTests=false -Dmaven.test.failure.ignore=false + mvn -B clean verify -Djacoco.skip=false -DskipITs -DfailIfNoTests=false -Dmaven.test.failure.ignore=false - name: Store project version id: version @@ -71,7 +90,7 @@ jobs: echo "app-version=$(yq -oy '.project.version' code/pom.xml)" >> "$GITHUB_OUTPUT" echo "app-name=$(yq -oy '.project.artifactId' code/pom.xml)" >> "$GITHUB_OUTPUT" - - name: Setup IVM environment + - name: SonarCloud / Setup asdf tools uses: asdf-vm/actions/install@v3 with: tool_versions: | @@ -79,7 +98,7 @@ jobs: nodejs 20.10.0 maven 3.9.4 - - name: Set asdf versions for SonarCloud + - name: SonarCloud / Set asdf versions working-directory: code run: | asdf local java temurin-17.0.8+7 @@ -91,8 +110,6 @@ jobs: run: | JAVA_HOME="$(asdf where java)" echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV - echo "JAVA_CACERTS_PATH=$JAVA_HOME/lib/security" >> $GITHUB_ENV - echo "JAVA_CACERTS=$JAVA_HOME/lib/security/cacerts" >> $GITHUB_ENV - name: SonarCloud / Run Maven Sonar goal with release event env: @@ -101,14 +118,16 @@ jobs: if: ${{ github.event_name == 'release' }} working-directory: code run: | + JACOCO_REPORT_PATH="$GITHUB_WORKSPACE/code/jacoco-report-aggregate/target/site/jacoco-aggregate/jacoco.xml" mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.1.2184:sonar \ - -Dsonar.projectKey=InditexTech_"${{ steps.version.outputs.app-name }}" \ + -Dsonar.projectKey=PabloCollazoCollarte_"${{ steps.version.outputs.app-name }}" \ -Dsonar.projectName="${{ steps.version.outputs.app-name }}" \ -Dsonar.projectVersion="${{ github.event.release.tag_name }}" \ -Dsonar.branch.name="release/${{ github.event.release.tag_name }}" \ -Dsonar.host.url="https://sonarcloud.io/" \ - -Dsonar.organization=inditextech \ - -Dsonar.token="${LOGIN}" + -Dsonar.organization=pablocollazocollarte \ + -Dsonar.token="${LOGIN}" \ + -Dsonar.coverage.jacoco.xmlReportPaths="$JACOCO_REPORT_PATH" - name: SonarCloud / Run Maven Sonar goal env: @@ -117,6 +136,7 @@ jobs: if: ${{ github.event_name != 'release' }} working-directory: code run: | + JACOCO_REPORT_PATH="$GITHUB_WORKSPACE/code/jacoco-report-aggregate/target/site/jacoco-aggregate/jacoco.xml" mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.1.2184:sonar \ -Dsonar.projectKey=PabloCollazoCollarte_"${{ steps.version.outputs.app-name }}" \ -Dsonar.projectName="${{ steps.version.outputs.app-name }}" \ @@ -124,4 +144,5 @@ jobs: -Dsonar.branch.name="${{ github.base_ref || github.ref_name }}" \ -Dsonar.host.url="https://sonarcloud.io/" \ -Dsonar.organization=pablocollazocollarte \ - -Dsonar.token="${LOGIN}" + -Dsonar.token="${LOGIN}" \ + -Dsonar.coverage.jacoco.xmlReportPaths="$JACOCO_REPORT_PATH" diff --git a/code/jacoco-report-aggregate/pom.xml b/code/jacoco-report-aggregate/pom.xml new file mode 100644 index 0000000..6f273c4 --- /dev/null +++ b/code/jacoco-report-aggregate/pom.xml @@ -0,0 +1,87 @@ + + + 4.0.0 + + + com.sivalabs + spring-boot-microservices-series + 0.0.1-SNAPSHOT + .. + + + jacoco-report-aggregate + pom + + ${project.groupId}:${project.artifactId} + InditexTech Karate Tools - Jacoco Report Aggregate + + + + ${project.groupId} + config-server + ${project.version} + + + ${project.groupId} + oauth2-server + ${project.version} + + + ${project.groupId} + service-registry + ${project.version} + + + ${project.groupId} + hystrix-dashboard + ${project.version} + + + ${project.groupId} + inventory-service + ${project.version} + + + ${project.groupId} + order-service + ${project.version} + + + ${project.groupId} + shoppingcart-ui + ${project.version} + + + ${project.groupId} + zipkin-server + ${project.version} + + + + + ${project.artifactId}-${project.version} + + + org.jacoco + jacoco-maven-plugin + + + quality-metric-jacoco-report-aggregate + prepare-package + + report-aggregate + + + ${project.parent.artifactId} +
Code Coverage Report for ${project.parent.artifactId} ${project.version}
+ + **/*.class + + ${jacoco.outputDirectory} +
+
+
+
+
+
+
diff --git a/code/pom.xml b/code/pom.xml index f059cfd..781d175 100644 --- a/code/pom.xml +++ b/code/pom.xml @@ -20,10 +20,15 @@ catalog-service inventory-service order-service - shoppingcart-ui + shoppingcart-ui zipkin-server + jacoco-report-aggregate + + true + + @@ -42,8 +47,42 @@ + + org.jacoco + jacoco-maven-plugin + 0.8.8 + + + + org.jacoco + jacoco-maven-plugin + + + quality-metric-jacoco-prepare-ut + initialize + + prepare-agent + + + + quality-metric-jacoco-prepare-it + initialize + + prepare-agent-integration + + + + quality-metric-jacoco-report + prepare-package + + report + + + + +