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

davsclaus pushed a commit to branch ci-skip-root-pom-scalpel
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 68272f440991a09fae80ea1edd70f7d3412a9f22
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed May 20 13:42:15 2026 +0200

    CAMEL-23565: CI skip Scalpel analysis for root pom.xml changes
    
    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