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
