From 58670265f43c78f2d70f693d0493ac3c225c0a6b Mon Sep 17 00:00:00 2001 From: "Lukas.Kuzavas" Date: Fri, 24 Jul 2026 12:49:39 +0100 Subject: [PATCH 1/5] fix: fix working directory issue (DCD-5103) --- .github/workflows/build-gradle-g8.yml | 3 ++- .github/workflows/sonarcloud.yml | 19 ++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build-gradle-g8.yml b/.github/workflows/build-gradle-g8.yml index a82799e5..9171754a 100644 --- a/.github/workflows/build-gradle-g8.yml +++ b/.github/workflows/build-gradle-g8.yml @@ -488,7 +488,8 @@ jobs: with: branch: ${{ inputs.branch }} version: ${{ inputs.version }} - server-path: '${{ inputs.working-directory }}/server' + working-directory: ${{ inputs.working-directory }} + server-path: server node_version: ${{ inputs.node_version }} REGISTRY_URL: ${{ inputs.REGISTRY_URL }} SCOPE: ${{ inputs.SCOPE }} diff --git a/.github/workflows/sonarcloud.yml b/.github/workflows/sonarcloud.yml index f823108f..5c6cdb62 100644 --- a/.github/workflows/sonarcloud.yml +++ b/.github/workflows/sonarcloud.yml @@ -17,7 +17,7 @@ on: type: string default: '.' server-path: - description: Path containing the server Gradle wrapper + description: Path containing the server Gradle wrapper (relative to working-directory) required: false type: string default: 'server' @@ -56,6 +56,7 @@ on: env: NODE_AUTH_TOKEN: ${{ secrets.GPR_READ_TOKEN }} SONAR_ARTIFACT_NAME: sonar-inputs-${{ github.run_id }} + SERVER_DIR: ${{ inputs.working-directory == '.' && inputs.server-path || format('{0}/{1}', inputs.working-directory, inputs.server-path) }} jobs: prepare-analysis: @@ -123,7 +124,7 @@ jobs: with: cache-disabled: true - name: Run tests and generate coverage - working-directory: "${{ inputs.working-directory }}/${{ inputs.server-path }}" + working-directory: ${{ env.SERVER_DIR }} shell: bash run: | set -euo pipefail @@ -135,11 +136,11 @@ jobs: retention-days: 1 if-no-files-found: error path: | - ${{ inputs.working-directory }}/${{ inputs.server-path }}/**/build/classes/** - ${{ inputs.working-directory }}/${{ inputs.server-path }}/**/build/generated/** - ${{ inputs.working-directory }}/${{ inputs.server-path }}/**/build/reports/** - ${{ inputs.working-directory }}/${{ inputs.server-path }}/**/build/test-results/** - ${{ inputs.working-directory }}/${{ inputs.server-path }}/**/build/jacoco/** + ${{ env.SERVER_DIR }}/**/build/classes/** + ${{ env.SERVER_DIR }}/**/build/generated/** + ${{ env.SERVER_DIR }}/**/build/reports/** + ${{ env.SERVER_DIR }}/**/build/test-results/** + ${{ env.SERVER_DIR }}/**/build/jacoco/** sonar-analysis: name: SonarCloud analysis @@ -217,11 +218,11 @@ jobs: name: ${{ env.SONAR_ARTIFACT_NAME }} path: ${{ github.workspace }} - name: Run SonarCloud analysis - working-directory: "${{ inputs.working-directory }}/${{ inputs.server-path }}" + working-directory: ${{ env.SERVER_DIR }} shell: bash env: SONAR_TOKEN: ${{ secrets.JENKINSGENESIS_SONAR }} GITHUB_TOKEN: ${{ github.token }} run: | set -euo pipefail - ./gradlew sonar --no-configuration-cache --stacktrace -Dsonar.token="${SONAR_TOKEN}" \ No newline at end of file + ./gradlew sonar --no-configuration-cache --stacktrace -Dsonar.token="${SONAR_TOKEN}" From 7bae90dfd1b03fa4126f44dd20a49725f9effd50 Mon Sep 17 00:00:00 2001 From: "Lukas.Kuzavas" Date: Fri, 24 Jul 2026 16:51:39 +0100 Subject: [PATCH 2/5] fix: need build-server for sonar analysis (DCD-5103) --- .github/workflows/build-gradle-g8.yml | 30 +++++++++++++++++++++++++++ .github/workflows/sonarcloud.yml | 12 ++++++++++- 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-gradle-g8.yml b/.github/workflows/build-gradle-g8.yml index 9171754a..92d60814 100644 --- a/.github/workflows/build-gradle-g8.yml +++ b/.github/workflows/build-gradle-g8.yml @@ -147,6 +147,8 @@ env: jobs: build-server: runs-on: [ appdev-selfhosted-al2023 ] + outputs: + sonar-inputs-artifact: ${{ steps.set_sonar_artifact.outputs.name }} steps: - uses: actions/checkout@v3 with: @@ -322,6 +324,32 @@ jobs: env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + - name: Generate JaCoCo reports for Sonar + if: inputs.sonar_enabled + uses: gradle/gradle-build-action@v2 + with: + arguments: jacocoTestReport ${{ env.CACHE_OPTS }} --stacktrace -Pversion=${{ env.BUILD_VERSION }} -PpushToCache=${{ env.GRADLE_GENESIS_PUSH_TO_CACHE }} -PdisableRemoteCache=${{ env.GRADLE_GENESIS_DISABLE_REMOTE_CACHE }} ${{ inputs.server-build-gradle-arguments }} + build-root-directory: "${{ inputs.working-directory }}" + cache-disabled: true + + - name: Upload Sonar inputs + if: inputs.sonar_enabled + uses: actions/upload-artifact@v4 + with: + name: sonar-inputs-${{ github.run_id }} + retention-days: 1 + if-no-files-found: error + path: | + ${{ inputs.working-directory }}/server/**/build/classes/** + ${{ inputs.working-directory }}/server/**/build/generated/** + ${{ inputs.working-directory }}/server/**/build/reports/** + ${{ inputs.working-directory }}/server/**/build/test-results/** + ${{ inputs.working-directory }}/server/**/build/jacoco/** + + - name: Record Sonar inputs artifact name + if: inputs.sonar_enabled + id: set_sonar_artifact + run: echo "name=sonar-inputs-${{ github.run_id }}" >> "$GITHUB_OUTPUT" - name: Check Auth Permissions task id: auth_permissions_task @@ -483,6 +511,7 @@ jobs: sonar: name: SonarCloud Analysis + needs: build-server if: ${{ inputs.sonar_enabled }} uses: ./.github/workflows/sonarcloud.yml with: @@ -493,6 +522,7 @@ jobs: node_version: ${{ inputs.node_version }} REGISTRY_URL: ${{ inputs.REGISTRY_URL }} SCOPE: ${{ inputs.SCOPE }} + sonar-inputs-artifact: ${{ needs.build-server.outputs.sonar-inputs-artifact }} secrets: GPR_READ_TOKEN: ${{ secrets.GPR_READ_TOKEN }} GRADLE_PROPERTIES: ${{ secrets.GRADLE_PROPERTIES }} diff --git a/.github/workflows/sonarcloud.yml b/.github/workflows/sonarcloud.yml index 5c6cdb62..66220299 100644 --- a/.github/workflows/sonarcloud.yml +++ b/.github/workflows/sonarcloud.yml @@ -39,6 +39,13 @@ on: description: NPM scope used with REGISTRY_URL required: false type: string + sonar-inputs-artifact: + description: >- + Optional artifact name containing classes/coverage/test results from a prior build. + When set, prepare-analysis skips re-running tests and reuses this artifact. + required: false + type: string + default: '' secrets: GPR_READ_TOKEN: required: true @@ -55,12 +62,13 @@ on: env: NODE_AUTH_TOKEN: ${{ secrets.GPR_READ_TOKEN }} - SONAR_ARTIFACT_NAME: sonar-inputs-${{ github.run_id }} + SONAR_ARTIFACT_NAME: ${{ inputs.sonar-inputs-artifact != '' && inputs.sonar-inputs-artifact || format('sonar-inputs-{0}', github.run_id) }} SERVER_DIR: ${{ inputs.working-directory == '.' && inputs.server-path || format('{0}/{1}', inputs.working-directory, inputs.server-path) }} jobs: prepare-analysis: name: Prepare Sonar inputs + if: ${{ inputs.sonar-inputs-artifact == '' }} runs-on: [appdev-selfhosted-al2023] steps: - name: Checkout repository @@ -145,6 +153,8 @@ jobs: sonar-analysis: name: SonarCloud analysis needs: prepare-analysis + # Prepare is skipped when the caller already uploaded Sonar inputs; still run analysis. + if: ${{ !cancelled() && (needs.prepare-analysis.result == 'success' || (needs.prepare-analysis.result == 'skipped' && inputs.sonar-inputs-artifact != '')) }} runs-on: [appdev-selfhosted-al2023] steps: - name: Checkout repository From fb63c83175fd86279c0c17aa15c0a912040cb348 Mon Sep 17 00:00:00 2001 From: "Lukas.Kuzavas" Date: Fri, 24 Jul 2026 17:29:47 +0100 Subject: [PATCH 3/5] fix: fix call to jacoco task (DCD-5103) --- .github/workflows/build-gradle-g8.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-gradle-g8.yml b/.github/workflows/build-gradle-g8.yml index 92d60814..b226da3c 100644 --- a/.github/workflows/build-gradle-g8.yml +++ b/.github/workflows/build-gradle-g8.yml @@ -329,7 +329,7 @@ jobs: uses: gradle/gradle-build-action@v2 with: arguments: jacocoTestReport ${{ env.CACHE_OPTS }} --stacktrace -Pversion=${{ env.BUILD_VERSION }} -PpushToCache=${{ env.GRADLE_GENESIS_PUSH_TO_CACHE }} -PdisableRemoteCache=${{ env.GRADLE_GENESIS_DISABLE_REMOTE_CACHE }} ${{ inputs.server-build-gradle-arguments }} - build-root-directory: "${{ inputs.working-directory }}" + build-root-directory: "${{ inputs.working-directory }}/server" cache-disabled: true - name: Upload Sonar inputs From 70ddc559d5a3c3c8c2e9f76ac031690fa3442aa2 Mon Sep 17 00:00:00 2001 From: "Lukas.Kuzavas" Date: Fri, 24 Jul 2026 20:17:30 +0100 Subject: [PATCH 4/5] fix: skip compile (DCD-5103) --- .github/workflows/build-gradle-g8.yml | 1 + .github/workflows/sonarcloud.yml | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-gradle-g8.yml b/.github/workflows/build-gradle-g8.yml index b226da3c..a561c8ca 100644 --- a/.github/workflows/build-gradle-g8.yml +++ b/.github/workflows/build-gradle-g8.yml @@ -345,6 +345,7 @@ jobs: ${{ inputs.working-directory }}/server/**/build/reports/** ${{ inputs.working-directory }}/server/**/build/test-results/** ${{ inputs.working-directory }}/server/**/build/jacoco/** + ${{ inputs.working-directory }}/server/build/** - name: Record Sonar inputs artifact name if: inputs.sonar_enabled diff --git a/.github/workflows/sonarcloud.yml b/.github/workflows/sonarcloud.yml index 66220299..2932ca0b 100644 --- a/.github/workflows/sonarcloud.yml +++ b/.github/workflows/sonarcloud.yml @@ -149,6 +149,7 @@ jobs: ${{ env.SERVER_DIR }}/**/build/reports/** ${{ env.SERVER_DIR }}/**/build/test-results/** ${{ env.SERVER_DIR }}/**/build/jacoco/** + ${{ env.SERVER_DIR }}/build/** sonar-analysis: name: SonarCloud analysis @@ -235,4 +236,6 @@ jobs: GITHUB_TOKEN: ${{ github.token }} run: | set -euo pipefail - ./gradlew sonar --no-configuration-cache --stacktrace -Dsonar.token="${SONAR_TOKEN}" + ./gradlew sonar --no-configuration-cache --stacktrace \ + -Dsonar.gradle.skipCompile=true \ + -Dsonar.token="${SONAR_TOKEN}" From 0855d6ec1d8de4265222c5c2afc4b0deebcad9e4 Mon Sep 17 00:00:00 2001 From: "Lukas.Kuzavas" Date: Fri, 24 Jul 2026 21:30:06 +0100 Subject: [PATCH 5/5] fix: java version (DCD-5103) --- .github/workflows/build-gradle-g8.yml | 3 ++- .github/workflows/sonarcloud.yml | 10 +++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-gradle-g8.yml b/.github/workflows/build-gradle-g8.yml index a561c8ca..75807463 100644 --- a/.github/workflows/build-gradle-g8.yml +++ b/.github/workflows/build-gradle-g8.yml @@ -345,7 +345,8 @@ jobs: ${{ inputs.working-directory }}/server/**/build/reports/** ${{ inputs.working-directory }}/server/**/build/test-results/** ${{ inputs.working-directory }}/server/**/build/jacoco/** - ${{ inputs.working-directory }}/server/build/** + ${{ inputs.working-directory }}/server/build/**/reports/** + ${{ inputs.working-directory }}/server/build/**/jacoco/** - name: Record Sonar inputs artifact name if: inputs.sonar_enabled diff --git a/.github/workflows/sonarcloud.yml b/.github/workflows/sonarcloud.yml index 2932ca0b..ae7e4b48 100644 --- a/.github/workflows/sonarcloud.yml +++ b/.github/workflows/sonarcloud.yml @@ -149,7 +149,8 @@ jobs: ${{ env.SERVER_DIR }}/**/build/reports/** ${{ env.SERVER_DIR }}/**/build/test-results/** ${{ env.SERVER_DIR }}/**/build/jacoco/** - ${{ env.SERVER_DIR }}/build/** + ${{ env.SERVER_DIR }}/build/**/reports/** + ${{ env.SERVER_DIR }}/build/**/jacoco/** sonar-analysis: name: SonarCloud analysis @@ -163,6 +164,13 @@ jobs: with: fetch-depth: 0 ref: ${{ inputs.branch }} + # Project toolchain JDK must be present even with skipCompile — Gradle still + # configures compileJava and resolves dependencies against languageVersion. + - name: Set up project JDK + uses: actions/setup-java@v4 + with: + java-version: ${{ inputs.project_java_version }} + distribution: temurin - name: Set up JDK 21 for Sonar uses: actions/setup-java@v4 with: