From a6c82016f25c43382d5d1fac23a8240c319c2c1a Mon Sep 17 00:00:00 2001 From: Romain Brenguier Date: Thu, 9 Jul 2026 13:56:37 +0200 Subject: [PATCH 1/4] Add ruling-update-notify job to main build workflow Integrates the ruling-update-and-notify action to respond to Ruling QA failures. This job: - Runs after all ruling-qa matrix jobs complete - Only runs on pull requests - Posts ruling diff comments to PRs - Prepares for future fix PR creation (currently disabled) The sync-command needs to be implemented to download actual results from the ruling-qa job artifacts before enabling fix PR creation. Fix ruling-qa failure detection for matrix jobs Changed from checking contains(needs.ruling-qa.result, 'failure') to checking if needs.ruling-qa.result != 'success'. For matrix jobs, the result is only 'success' if ALL matrix jobs succeeded, otherwise it's 'failure'. Simplify ruling-update-notify workflow integration Removed complex sync-command - the action now handles artifact download automatically. The workflow just needs to specify the basic parameters. This makes integration much cleaner and easier to maintain. Simplify Ruling QA matrix to single job for testing Temporarily keep only one matrix item (without-sonarqube-project on sonar-m-public) to make testing of the ruling-update-notify action faster and simpler. --- .github/workflows/build.yml | 42 +++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index adc919372bd..50281672de8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -117,6 +117,48 @@ jobs: expected-dir: src/test/resources actual-dir: target/actual + ruling-update-notify: + name: Ruling Update and Notify + needs: ruling-qa + if: always() && github.event_name == 'pull_request' + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + submodules: recursive + + - name: Install uv + uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7 + with: + enable-cache: true + + - name: Check ruling-qa results + id: check-ruling + run: | + # Check if any ruling-qa job failed + # For matrix jobs, needs.ruling-qa.result can be 'success' only if ALL jobs succeeded + RULING_FAILED=false + if [[ "${{ needs.ruling-qa.result }}" != "success" ]]; then + RULING_FAILED=true + fi + echo "ruling-failed=$RULING_FAILED" >> "$GITHUB_OUTPUT" + echo "Ruling QA result: ${{ needs.ruling-qa.result }}, failed=$RULING_FAILED" + + - name: Update ruling and notify + uses: SonarSource/core-languages-tooling-public/ruling-update-and-notify@master + with: + pr-number: ${{ github.event.pull_request.number }} + ruling-failed: ${{ steps.check-ruling.outputs.ruling-failed }} + ruling-root: 'its/ruling/src/test/resources' + sources-root: 'its/sources' + env: + GH_TOKEN: ${{ github.token }} + plugin-qa: strategy: fail-fast: false From df079a050d6f616d334121548154311e6c49634e Mon Sep 17 00:00:00 2001 From: Romain Brenguier Date: Thu, 9 Jul 2026 10:56:38 +0200 Subject: [PATCH 2/4] Test new github action Delete workflow that duplicates what's done in build Fix malformed JSON in ruling file The file was missing the opening brace '{', causing JSON parse errors. Fixed format: - Before: "key": [values]... - After: {"key": [values]...} --- .../commons-beanutils/java-S1448.json | 2 +- .../commons-beanutils/java-S1488.json | 32 ------------------- .../resources/test-project/java-S1234.json | 1 + 3 files changed, 2 insertions(+), 33 deletions(-) delete mode 100644 its/ruling/src/test/resources/commons-beanutils/java-S1488.json create mode 100644 its/ruling/src/test/resources/test-project/java-S1234.json diff --git a/its/ruling/src/test/resources/commons-beanutils/java-S1448.json b/its/ruling/src/test/resources/commons-beanutils/java-S1448.json index 9beb36ea03f..2fddb4d5525 100644 --- a/its/ruling/src/test/resources/commons-beanutils/java-S1448.json +++ b/its/ruling/src/test/resources/commons-beanutils/java-S1448.json @@ -2,4 +2,4 @@ "commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/PropertyUtilsBean.java": [ 93 ] -} +} \ No newline at end of file diff --git a/its/ruling/src/test/resources/commons-beanutils/java-S1488.json b/its/ruling/src/test/resources/commons-beanutils/java-S1488.json deleted file mode 100644 index 44950c34791..00000000000 --- a/its/ruling/src/test/resources/commons-beanutils/java-S1488.json +++ /dev/null @@ -1,32 +0,0 @@ -{ -"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/BeanMap.java": [ -766 -], -"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/PropertyUtilsBean.java": [ -1265 -], -"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/converters/DateTimeConverter.java": [ -528, -570 -], -"commons-beanutils:commons-beanutils:src/test/java/org/apache/commons/beanutils2/BasicDynaBeanTestCase.java": [ -986 -], -"commons-beanutils:commons-beanutils:src/test/java/org/apache/commons/beanutils2/BeanMapTestCase.java": [ -181, -208, -226 -], -"commons-beanutils:commons-beanutils:src/test/java/org/apache/commons/beanutils2/DynaBeanUtilsTestCase.java": [ -1237 -], -"commons-beanutils:commons-beanutils:src/test/java/org/apache/commons/beanutils2/DynaPropertyUtilsTestCase.java": [ -2614 -], -"commons-beanutils:commons-beanutils:src/test/java/org/apache/commons/beanutils2/bugs/Jira347TestCase.java": [ -150 -], -"commons-beanutils:commons-beanutils:src/test/java/org/apache/commons/beanutils2/memoryleaktests/MemoryLeakTestCase.java": [ -528 -] -} diff --git a/its/ruling/src/test/resources/test-project/java-S1234.json b/its/ruling/src/test/resources/test-project/java-S1234.json new file mode 100644 index 00000000000..b33572d2528 --- /dev/null +++ b/its/ruling/src/test/resources/test-project/java-S1234.json @@ -0,0 +1 @@ +{"test:test.java": [42]} From 383155583cfee99776bc37e714b1a147e02d299f Mon Sep 17 00:00:00 2001 From: Romain Brenguier Date: Tue, 14 Jul 2026 14:31:38 +0200 Subject: [PATCH 3/4] Delete its/ruling/src/test/resources/test-project/java-S1234.json --- its/ruling/src/test/resources/test-project/java-S1234.json | 1 - 1 file changed, 1 deletion(-) delete mode 100644 its/ruling/src/test/resources/test-project/java-S1234.json diff --git a/its/ruling/src/test/resources/test-project/java-S1234.json b/its/ruling/src/test/resources/test-project/java-S1234.json deleted file mode 100644 index b33572d2528..00000000000 --- a/its/ruling/src/test/resources/test-project/java-S1234.json +++ /dev/null @@ -1 +0,0 @@ -{"test:test.java": [42]} From 0b1bbf605bcdad454d8c3d35a28183444195dbac Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 14 Jul 2026 14:31:49 +0200 Subject: [PATCH 4/4] Update ruling results for PR #5762 (#5773) Co-authored-by: github-actions[bot] --- .../commons-beanutils/java-S1448.json | 2 +- .../commons-beanutils/java-S1488.json | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 its/ruling/src/test/resources/commons-beanutils/java-S1488.json diff --git a/its/ruling/src/test/resources/commons-beanutils/java-S1448.json b/its/ruling/src/test/resources/commons-beanutils/java-S1448.json index 2fddb4d5525..9beb36ea03f 100644 --- a/its/ruling/src/test/resources/commons-beanutils/java-S1448.json +++ b/its/ruling/src/test/resources/commons-beanutils/java-S1448.json @@ -2,4 +2,4 @@ "commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/PropertyUtilsBean.java": [ 93 ] -} \ No newline at end of file +} diff --git a/its/ruling/src/test/resources/commons-beanutils/java-S1488.json b/its/ruling/src/test/resources/commons-beanutils/java-S1488.json new file mode 100644 index 00000000000..44950c34791 --- /dev/null +++ b/its/ruling/src/test/resources/commons-beanutils/java-S1488.json @@ -0,0 +1,32 @@ +{ +"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/BeanMap.java": [ +766 +], +"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/PropertyUtilsBean.java": [ +1265 +], +"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/converters/DateTimeConverter.java": [ +528, +570 +], +"commons-beanutils:commons-beanutils:src/test/java/org/apache/commons/beanutils2/BasicDynaBeanTestCase.java": [ +986 +], +"commons-beanutils:commons-beanutils:src/test/java/org/apache/commons/beanutils2/BeanMapTestCase.java": [ +181, +208, +226 +], +"commons-beanutils:commons-beanutils:src/test/java/org/apache/commons/beanutils2/DynaBeanUtilsTestCase.java": [ +1237 +], +"commons-beanutils:commons-beanutils:src/test/java/org/apache/commons/beanutils2/DynaPropertyUtilsTestCase.java": [ +2614 +], +"commons-beanutils:commons-beanutils:src/test/java/org/apache/commons/beanutils2/bugs/Jira347TestCase.java": [ +150 +], +"commons-beanutils:commons-beanutils:src/test/java/org/apache/commons/beanutils2/memoryleaktests/MemoryLeakTestCase.java": [ +528 +] +}