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
Copy link
Copy Markdown
Contributor

@duncdrum duncdrum commented Jun 1, 2026

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment