Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/CI-ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
8 changes: 6 additions & 2 deletions .github/actions/incremental-build/incremental-build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down