This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new bf41db9a0eb2 CAMEL-23565: CI skip Scalpel analysis for root pom.xml 
changes (#23371)
bf41db9a0eb2 is described below

commit bf41db9a0eb23a473fc60ee48bf68f8121cf7aaf
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu May 21 07:28:32 2026 +0200

    CAMEL-23565: CI skip Scalpel analysis for root pom.xml changes (#23371)
    
    The root pom.xml contains build-infrastructure config (license plugin,
    checkstyle, etc.) that does not affect module compilation or test
    behavior. When Scalpel analyzes root pom.xml changes, it reports every
    module as affected since they all inherit from it, causing CI to test
    the entire project unnecessarily.
    
    Only invoke Scalpel when a subdirectory pom.xml changes (parent/pom.xml,
    module pom.xml).
    
    Co-authored-by: Claude Opus 4.6 <[email protected]>
---
 .github/CI-ARCHITECTURE.md                             | 2 ++
 .github/actions/incremental-build/incremental-build.sh | 8 ++++++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/.github/CI-ARCHITECTURE.md b/.github/CI-ARCHITECTURE.md
index 4672dcd5a9c3..948f3e11b96a 100644
--- a/.github/CI-ARCHITECTURE.md
+++ b/.github/CI-ARCHITECTURE.md
@@ -158,6 +158,8 @@ Scalpel is configured permanently in `.mvn/extensions.xml` 
(version `0.1.0`). On
 
 Note: the script overrides `fullBuildTriggers` to empty 
(`-Dscalpel.fullBuildTriggers=`) because Scalpel's default (`.mvn/**`) would 
trigger a full build whenever `.mvn/extensions.xml` itself changes (e.g., 
Dependabot bumping Scalpel).
 
+Scalpel is only invoked when a **subdirectory** `pom.xml` is changed (e.g. 
`parent/pom.xml`, `components/camel-kafka/pom.xml`). Changes to the **root** 
`pom.xml` are excluded because it contains build-infrastructure config (license 
plugin, checkstyle, etc.) that does not affect module compilation or test 
behavior. Without this filter, Scalpel would report every module as affected 
since they all inherit from the root POM.
+
 ## Manual Integration Test Advisories
 
 Some modules are excluded from CI's `-amd` expansion (the `EXCLUSION_LIST`) 
because they are generated code, meta-modules, or expensive integration test 
suites. When a contributor changes one of these modules, CI cannot 
automatically test all downstream effects.
diff --git a/.github/actions/incremental-build/incremental-build.sh 
b/.github/actions/incremental-build/incremental-build.sh
index a1efc1e4c960..fa7f50ac7b17 100755
--- a/.github/actions/incremental-build/incremental-build.sh
+++ b/.github/actions/incremental-build/incremental-build.sh
@@ -562,10 +562,14 @@ main() {
     done <<< "$pom_files"
   fi
 
-  # Step 2b: Scalpel detection (parallel, for any pom.xml change)
+  # Step 2b: Scalpel detection (for parent or module pom.xml changes)
   # Scalpel uses effective POM model comparison — catches managed deps,
   # plugin changes, and transitive impacts that grep misses.
-  if echo "$diff_body" | grep -q '^diff --git a/.*pom\.xml'; then
+  # Skip when only the root pom.xml changed — it contains build-infrastructure
+  # config (license plugin, checkstyle, etc.) that doesn't affect module
+  # compilation or test behavior. Without this filter, Scalpel reports every
+  # module as affected because they all inherit from the root POM.
+  if echo "$diff_body" | sed -n 's|^diff --git a/\(.*\) b/.*|\1|p' | grep -q 
'.*/pom\.xml$'; then
     echo ""
     echo "Running Scalpel POM analysis..."
     runScalpelDetection

Reply via email to