Skip to content

[refactor] Modernize Maven 3 build pipeline and release automation - #6429

Merged
windauer merged 10 commits into
eXist-db:developfrom
duncdrum:dp-build-prep
Jun 1, 2026
Merged

[refactor] Modernize Maven 3 build pipeline and release automation#6429
windauer merged 10 commits into
eXist-db:developfrom
duncdrum:dp-build-prep

Conversation

@duncdrum

@duncdrum duncdrum commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

Summary

Ports the lessons from the deferred Maven 4 experiment (#6276) into a
production-ready Maven 3 pipeline. Replaces maven-release-plugin with a
two-workflow GitHub Actions pattern, simplifies the profile graph, modernizes
macOS notarization (notarytool + API key auth), and adds Windows Authenticode
signing via Azure Key Vault. Maven Central publishing migrated from legacy
OSSRH to the new Central Portal (central-publishing-maven-plugin).

What changed

POM modernization

  • All 59 POMs switched to ${revision} (CI-friendly versions). <revision>7.0.0-SNAPSHOT> set as default in exist-parent.
  • flatten-maven-plugin 1.7.3 added — flattenMode=resolveCiFriendliesOnly — so deployed POMs resolve ${revision} to a literal version. flatten.clean execution bound to clean phase so mvn package is idempotent.
  • Minimum Maven version bumped to 3.9.16.

Profile simplification

  • Removed activeByDefault from installer / concurrency-stress-tests / micro-benchmarks — they no longer leak into contributor builds.
  • New umbrella profiles: local-build (default), release-build (adds installer + GPG signing + Central publishing), perf-tests (stress + benchmarks).
  • Removed redundant installer, concurrency-stress-tests, `micro-benumbrella restructure.

Release pipeline (CI)

  • New ci-release-prepare.yml (workflow_dispatch): updates CITATION.cff, commits, creates annotated eXist-X.Y.Z tag, pushes via RELEASE_PAT.
  • New ci-release.yml (tag-triggered): parallel build-linux (Maven Cbuild-mac(signed + notarized DMG),build-windows(signed installerJAR + Authenticode.exe), converging on publish-github-release`.
  • release-preflight enforcer profile validates required secrets befor
  • Workflows hardened: least-privilege permissions, tokens out of CLI args, third-party actions SHA-pinned.

macOS signing

  • Migrated from deprecated altool --notarize-app to notarytool submitaple with App Store Connect API Key auth (no Apple ID, no 2FA).
  • Decoupled mac-dmg-on-mac activation from mac-signing — contributors get an unsigned DMG automatically on macOS without extra flags.
  • Removed default mac.codesign.identity.
  • Jansi native code now signed in both jarfiles.

Windows signing

  • Azure OIDC federated identity via azure/login@v2 (no long-lived sec
  • JAR signing via azure-security-keyvault-jca; .exe Authenticode via AzureSignTool.

Documentation

  • exist-versioning-release.md rewritten for the two-workflow pattern

Closes

see #6176

duncdrum and others added 9 commits June 1, 2026 10:51
Switch all 59 POMs to ${revision} with flatten-maven-plugin resolving
it in deployed artifacts. Replace activeByDefault on installer/stress/
benchmarks with explicit umbrella profiles: local-build (default),
release-build (installer + Central Portal publishing via
central-publishing-maven-plugin), perf-tests (stress + benchmarks).
Add release-preflight enforcer and GPG signing to release-build.
Migrate macOS notarization from deprecated altool to notarytool+staple;
fix CI activation guard on mac-dmg-on-mac.

close eXist-db#3394
close eXist-db#4519
see eXist-db#6176
Replaces mvn release:prepare/perform with two GitHub Actions workflows:
ci-release-prepare (workflow_dispatch) updates CITATION.cff, commits,
and
pushes an annotated eXist-X.Y.Z tag; ci-release (tag-triggered) runs
parallel platform jobs for Maven Central deploy, signed+notarized macOS
DMG, and Authenticode-signed Windows installer, converging on a GitHub
Release. Updates exist-versioning-release.md to document the new
procedure.

Closes eXist-db#5597 eXist-db#4217
- least-privilege permissions,
- remove token from CLI args,
- SHA-pin third-party actions
to latest 3.9 in prep for maven 4
@duncdrum
duncdrum marked this pull request as ready for review June 1, 2026 13:37
@duncdrum
duncdrum requested a review from a team as a code owner June 1, 2026 13:37
Comment thread exist-versioning-release.md
@line-o
line-o requested a review from a team June 1, 2026 14:59
@duncdrum duncdrum added this to v7.0.0 Jun 1, 2026
@duncdrum duncdrum added this to the eXist-7.0.0 milestone Jun 1, 2026
@duncdrum duncdrum moved this to In review in v7.0.0 Jun 1, 2026
@windauer
windauer merged commit 40c2fff into eXist-db:develop Jun 1, 2026
14 of 15 checks passed
@github-project-automation github-project-automation Bot moved this from In review to Done in v7.0.0 Jun 1, 2026
@duncdrum
duncdrum deleted the dp-build-prep branch August 19, 2026 10:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment