Skip to content

ci: add Scalpel POM dependency detection using released 0.1.0#22510

Merged
gnodet merged 1 commit intoapache:mainfrom
gnodet:worktree-scalpel-release
Apr 9, 2026
Merged

ci: add Scalpel POM dependency detection using released 0.1.0#22510
gnodet merged 1 commit intoapache:mainfrom
gnodet:worktree-scalpel-release

Conversation

@gnodet
Copy link
Copy Markdown
Contributor

@gnodet gnodet commented Apr 9, 2026

Summary

  • Adds Maveniverse Scalpel 0.1.0 permanently to .mvn/extensions.xml
  • Adds Scalpel-based POM dependency detection in incremental-build.sh alongside the existing grep approach
  • On developer machines, Scalpel is a no-op (no GITHUB_BASE_REF → no base branch → returns immediately)

Why

The grep-based approach has 5 structural limitations. For example, when Dependabot bumps azure-sdk-bom-version (#21744), grep finds only camel-azure/pom.xml but misses all 12 child Azure modules that inherit via the BOM. Scalpel catches them via effective POM model comparison.

How it works

Scalpel is a Maven core extension that compares effective POM models between the base branch and the PR. In CI:

  1. incremental-build.sh runs mvn validate -Dscalpel.mode=report (~60-90s, no compilation)
  2. Scalpel writes target/scalpel-report.json with affected modules and reasons
  3. Results are merged with grep detection (union, deduplicated)
  4. -Dscalpel.fullBuildTriggers= overrides the default (.mvn/**) since Scalpel lives in extensions.xml

Test plan

🤖 Generated with Claude Code

Claude Code on behalf of Guillaume Nodet

Add Maveniverse Scalpel as a parallel POM dependency detection mechanism
in the incremental build script. Scalpel compares effective POM models
between the base branch and the PR, catching managed dependencies, plugin
version changes, BOM imports, and transitive dependency impacts that the
existing grep-based approach misses.

Since Scalpel 0.1.0 is released to Maven Central, add it permanently to
.mvn/extensions.xml. On developer machines it is a no-op (no base branch
env vars detected). This avoids the complexity of temporary extension
injection and snapshot repository configuration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@gnodet gnodet requested review from apupier and oscerd April 9, 2026 11:20
@github-actions github-actions bot added the docs label Apr 9, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 9, 2026

🌟 Thank you for your contribution to the Apache Camel project! 🌟
🤖 CI automation will test this PR automatically.

🐫 Apache Camel Committers, please review the following items:

  • First-time contributors require MANUAL approval for the GitHub Actions to run
  • You can use the command /component-test (camel-)component-name1 (camel-)component-name2.. to request a test from the test bot although they are normally detected and executed by CI.
  • You can label PRs using skip-tests and test-dependents to fine-tune the checks executed by this PR.
  • Build and test logs are available in the summary page. Only Apache Camel committers have access to the summary.

⚠️ Be careful when sharing logs. Review their contents before sharing them publicly.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 9, 2026

ℹ️ CI did not run targeted module tests.


⚙️ View full build and test results

@gnodet gnodet force-pushed the worktree-scalpel-release branch 2 times, most recently from 599b0f0 to b40772d Compare April 9, 2026 13:10
@gnodet gnodet merged commit 3c48bdb into apache:main Apr 9, 2026
12 of 15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants