Skip to content

ci: Maven Central publishing and CI/CD pipeline - #121

Merged
basteez merged 3 commits into
mainfrom
004-maven-publish-cicd
Apr 16, 2026
Merged

basteez merged 3 commits into
mainfrom
004-maven-publish-cicd

Conversation

@basteez

@basteez basteez commented Apr 16, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Add release Maven profile with source, javadoc, GPG signing, and Sonatype Central Publishing plugins for Maven Central compliance
  • Create GitHub Actions CI workflow (ci.yml) with JDK 11 + 21 matrix on PRs and pushes to main
  • Create GitHub Actions release workflow (release.yml) triggered by v*.*.* tags — builds, signs, deploys to Maven Central, and auto-bumps to next SNAPSHOT
  • Update project version from 0.1.0-SNAPSHOT to 1.0.0-SNAPSHOT across all modules
  • Add developer organization/organizationUrl metadata required by Sonatype Central Portal
  • Configure jsf-autoreload-integration-tests to skip javadoc and GPG signing in release profile

Prerequisites before first release

The following GitHub Actions secrets must be configured manually:

  • GPG_PRIVATE_KEY — Base64-encoded GPG private key
  • GPG_PASSPHRASE — GPG key passphrase
  • CENTRAL_USERNAME — Sonatype Central Portal username token
  • CENTRAL_PASSWORD — Sonatype Central Portal password token
  • RELEASE_TOKEN — GitHub PAT with push access to main (for SNAPSHOT bump commit)

Test plan

  • Verify mvn -B -P release verify -DskipTests produces sources JAR, javadoc JAR, and .asc files for each publishable module
  • Open a test PR to confirm CI workflow triggers on both JDK 11 and JDK 21
  • Verify integration-tests module is excluded from release artifact generation
  • After configuring secrets, push a v1.0.0 tag to test the full release pipeline

Closes #110
Closes #111
Closes #112
Closes #113
Closes #114
Closes #115
Closes #116
Closes #117
Closes #118
Closes #119
Closes #120

🤖 Generated with Claude Code

basteez and others added 3 commits April 16, 2026 18:40
Configure the project for Maven Central publishing via Sonatype Central
Portal with automated CI/CD:

- Add release profile with maven-source, javadoc, gpg, and central-publishing plugins
- Create CI workflow (JDK 11 + 21 matrix) for PRs and pushes to main
- Create release workflow triggered by version tags (v*.*.*)
- Update version from 0.1.0-SNAPSHOT to 1.0.0-SNAPSHOT
- Add developer organization metadata for Central compliance
- Skip javadoc/gpg for integration-tests module in release profile

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
On Linux, Java's WatchService fires both ENTRY_CREATE and ENTRY_MODIFY
for a single Files.write(), causing the test to see 2 events instead
of the expected 1. Assert non-empty instead of exact count, since the
duplicate event is an OS-level implementation detail.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Same duplicate-event issue as DirectoryWatcherTest — on Linux, Java's
WatchService fires both ENTRY_CREATE and ENTRY_MODIFY for a single
Files.write(). Assert non-empty instead of exact count.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@basteez
basteez merged commit 84a6385 into main Apr 16, 2026
2 checks passed
@basteez
basteez deleted the 004-maven-publish-cicd branch April 17, 2026 06:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment