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}
+
+
+ **/*.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
+
+
+
+
+