Repository navigation
ci: tag-on-merge release pipeline via maven-release-plugin - #58
Conversation
Replace the manual strip-SNAPSHOT / bump-SNAPSHOT release dance with a PR-based,
version-in-committed-code golden path. master is always a -SNAPSHOT.
- prepare-release.yml (workflow_dispatch): runs `mvn release:prepare` (rewrites poms +
makes the two version commits; no build, no push) and opens a `release: <version>` PR.
- publish.yml: on merge, finds the `[maven-release-plugin] prepare release` commit,
deploys THAT SHA as the release, tags v<version>, cuts a GitHub release. Snapshots still
publish on master push. Squash guard fails loudly if the release commit was lost.
- pom.xml: reconfigure the existing maven-release-plugin (tagNameFormat=v@{project.version},
preparationGoals=validate so prepare only touches poms, pushChanges=false).
- docs: rewrite the Releasing sections in AGENTS.md and the README.
Works with merge-commit or rebase-and-merge; not squash.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Dependency ReviewThe following issues were found:
License Issues.github/workflows/prepare-release.yml
OpenSSF Scorecard
Scanned Files
|
❌ Duplicate Code ReportTwo engines run in parallel for cross-validation. Each has its own thresholds tuned to its baseline - the real safety net is the per-engine "max increase vs base" check. ✅ PMD CPD
No new clones introduced by this PR. ❌ jscpd (language-agnostic)
No new clones introduced by this PR. Powered by astubbs/duplicate-code-cross-check |
✅ SpotBugs ReportNo bugs found (new bugs only — baseline from base branch excluded). |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #58 +/- ##
============================================
- Coverage 78.20% 77.18% -1.03%
- Complexity 0 1154 +1154
============================================
Files 71 82 +11
Lines 3666 4190 +524
Branches 373 386 +13
============================================
+ Hits 2867 3234 +367
- Misses 622 765 +143
- Partials 177 191 +14
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
❌ Mutation Testing (PIT) ReportPIT did not produce a report. Most commonly this means a test failed in the baseline (PIT runs all tests unmodified first to establish green) and PIT aborted before mutating. See the "Run PIT mutation testing" step logs for the failing test, then either fix it or add it to |
Release groundwork for the first fork release - docs only, no version changes. - CHANGELOG: finalize the 0.6.0.0 section - first-release intro + "drop-in, just change the groupId" note; surface the new parallel-consumer-mutiny module (upstream confluentinc#891) and commit-failure offset logging (upstream confluentinc#850); trim internal test/CI/docs noise. - README: add the top-of-page Maven coordinates block; remove the dead Confluent product-page link. The version bump and publish are handled by the tag-on-merge pipeline (#58) via the Prepare Release workflow; this PR just lands the release docs on master first. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Release groundwork for the first fork release - docs only, no version changes. - CHANGELOG: finalize the 0.6.0.0 section - first-release intro + "drop-in, just change the groupId" note; surface the new parallel-consumer-mutiny module (upstream confluentinc#891) and commit-failure offset logging (upstream confluentinc#850); trim internal test/CI/docs noise. - README: add the top-of-page Maven coordinates block; remove the dead Confluent product-page link. The version bump and publish are handled by the tag-on-merge pipeline (#58) via the Prepare Release workflow; this PR just lands the release docs on master first. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replaces the manual "strip
-SNAPSHOT→ merge → bump-SNAPSHOT" release dance with a version-in-committed-code, PR-based, tag-on-merge golden path.masteris always a-SNAPSHOT.The flow (one PR, no extra bits)
0.6.0.0) + next dev version (0.6.0.1-SNAPSHOT). It runsmvn release:prepare(poms only, no build) and opens arelease: <version>PR with the two version commits.publish.ymlfinds the[maven-release-plugin] prepare releasecommit, deploys that exact SHA, tagsv<version>, cuts a GitHub release.masteris already back on the next-SNAPSHOT.How it publishes the non-tip commit
After merge, master's tip is the next-dev (snapshot) commit, so CI can't just build the tip. Instead
publish.ymlscans recent commits for the[maven-release-plugin] prepare release <label>subject whose tag doesn't exist yet, checks out that SHA, and releases it. This is why it works with merge-commit or rebase-and-merge (both preserve the commit) but not squash (collapses it) - and there's a squash guard that fails loudly rather than silently no-op'ing a squashed release.Changes
pom.xml: reconfigure existingmaven-release-plugin(tagNameFormat=v@{project.version},preparationGoals=validate,pushChanges=false)..github/workflows/prepare-release.yml(new):workflow_dispatch→release:prepare+ open PR..github/workflows/publish.yml: detect-release-commit-or-snapshot + tag/publish that SHA.AGENTS.md+ README: rewritten Releasing docs.Known limitations (flagged, not blockers)
GITHUB_TOKEN, so its own "Build and Test" checks may not auto-run (GitHub doesn't trigger workflows from token-created PRs). The commits are version-only bumps, and merging still runs Build and Test on master (which gates publish). Swap in a PAT fortoken:if you want checks on the release PR itself.🤖 Generated with Claude Code