Conversation
Co-authored-by: rdobrik <8812511+rdobrik@users.noreply.github.com>
Co-authored-by: rdobrik <8812511+rdobrik@users.noreply.github.com>
Co-authored-by: rdobrik <8812511+rdobrik@users.noreply.github.com>
Co-authored-by: rdobrik <8812511+rdobrik@users.noreply.github.com>
Co-authored-by: rdobrik <8812511+rdobrik@users.noreply.github.com>
There was a problem hiding this comment.
Pull Request Overview
This PR implements comprehensive Maven Central release automation for the RosettaNet Jakarta JAXB project. The solution enables both manual and automated releases through GitHub Actions, with proper signing, credential management, and validation.
Key Changes:
- Added signing plugin and OSSRH repository configuration to build.gradle for Maven Central publishing
- Created extensive 855-line RELEASE.md documentation covering setup, release processes, validation, and troubleshooting
- Implemented GitHub Actions workflows for automated releases (release.yml) and CI builds (build.yml)
Reviewed Changes
Copilot reviewed 5 out of 6 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| issues/3.md | Quick reference guide documenting the resolution of Maven Central release automation with checklists and implementation status |
| build.gradle | Added signing plugin, OSSRH repositories configuration, developers section in POM, and conditional signing based on credential availability |
| RELEASE.md | Comprehensive documentation for Maven Central publishing covering prerequisites, configuration, local/CI processes, validation, staging, and troubleshooting |
| README.md | Added Publishing to Maven Central section with link to RELEASE.md |
| .github/workflows/release.yml | Automated release workflow triggered by tags or manual dispatch, with version validation, testing, and artifact publishing |
| .github/workflows/build.yml | CI workflow for PRs and branches with build validation, testing, and artifact upload |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| # Convert to base64 for use as SIGNING_KEY secret | ||
| cat private-key.asc | base64 -w 0 > private-key.base64 | ||
|
|
||
| # Upload public key to keyserver | ||
| gpg --keyserver keyserver.ubuntu.com --send-keys YOUR_KEY_ID | ||
| ``` | ||
|
|
There was a problem hiding this comment.
The -w 0 flag for base64 encoding is Linux-specific and will not work on macOS. On macOS, the equivalent is base64 -i private-key.asc -o private-key.base64 or base64 < private-key.asc without the -w flag. Consider adding a note about platform differences or providing both command variants.
| # Convert to base64 for use as SIGNING_KEY secret | |
| cat private-key.asc | base64 -w 0 > private-key.base64 | |
| # Upload public key to keyserver | |
| gpg --keyserver keyserver.ubuntu.com --send-keys YOUR_KEY_ID | |
| ``` | |
| # Convert to base64 for use as SIGNING_KEY secret | |
| # Linux: | |
| cat private-key.asc | base64 -w 0 > private-key.base64 | |
| # macOS: | |
| base64 < private-key.asc > private-key.base64 | |
| # Upload public key to keyserver | |
| gpg --keyserver keyserver.ubuntu.com --send-keys YOUR_KEY_ID |
Note: The
-w 0flag forbase64is only available on Linux. On macOS, usebase64 < private-key.asc > private-key.base64instead.
Implements complete Maven Central publishing workflow for RosettaNet Jakarta JAXB artifacts, addressing the lack of documented release automation and credential management.
Changes
Gradle Configuration (
build.gradle)signingplugin with conditional GPG signing (skips when credentials absent)developerssection for Maven Central requirementsRelease Documentation (
RELEASE.md)OSSRH_USERNAME,OSSRH_PASSWORD,SIGNING_KEY,SIGNING_PASSWORDpublishToMavenLocal→ signature verification → OSSRH staging → close/releaseCI/CD Automation
.github/workflows/release.yml: Tag-triggered or manual release workflow with version validation, test execution, OSSRH publishing, GitHub release creation.github/workflows/build.yml: PR/branch CI with build validation and local Maven publishing testQuick Reference (
issues/3.md)Key Features
Conditional signing: Local development works without GPG keys; signing enforced only for
publishtaskVersion routing: Snapshots → snapshots repository, releases → staging repository
Security: Minimal workflow permissions, in-memory PGP key handling, no credentials in version control
Original prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.