Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Nov 19, 2025

Implements automated release pipeline for Maven Central deployment with manual GitHub Actions trigger. Only netty-virtualthread-core publishes to Maven; all modules auto-bump to next SNAPSHOT post-release.

Changes

Licensing

  • Apache License 2.0 applied: LICENSE file + headers in all source files via maven-license-plugin
  • POM updated with license metadata, SCM info, developers

Release Automation

  • .github/workflows/release.yml: Manual workflow (workflow_dispatch) handles version set → build → GPG sign → Maven Central deploy → GitHub release → SNAPSHOT bump
  • .mvn/jreleaser.yml: Configures Nexus2 deployer, only deploys netty-virtualthread-core artifact
  • pom.xml: Release profile with javadoc, sources, GPG plugins; JReleaser plugin configured

Documentation

  • RELEASE.md: Secret setup (GPG, Maven Central credentials), troubleshooting, key generation examples
  • README.md: Quick start release instructions

Release Workflow

Maintainer triggers via Actions UI with version input (e.g., 1.0.0):

  1. Sets release version across all POMs
  2. Builds and signs artifacts
  3. Stages netty-virtualthread-core only to Maven Central
  4. Creates GitHub release with changelog
  5. Bumps all modules to next SNAPSHOT (e.g., 1.0.1-SNAPSHOT)

Requires secrets: MAVEN_USERNAME, MAVEN_PASSWORD, GPG_PRIVATE_KEY, GPG_PASSPHRASE, GPG_PUBLIC_KEY

Original prompt

This section details on the original issue you should resolve

<issue_title>Setup jreleaser GitHub automation</issue_title>
<issue_description>I would like to have setup to:

  • publish a new release via GitHub action
  • the release to maven should be just of the core artifact
  • jreleaser should take care of renaming to snapshot all the artifacts (not just core)
  • the release need to happen via manually triggering the action
    </issue_description>

<agent_instructions>I would like to provide the src under apache licence too</agent_instructions>

Comments on the Issue (you are @copilot in this section)


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Copilot AI changed the title [WIP] Setup jreleaser GitHub automation for releases Setup JReleaser automation with Apache License 2.0 Nov 19, 2025
Copilot AI requested a review from franz1981 November 19, 2025 09:18
@franz1981
Copy link
Owner

@copilot do you suggest me to first get all the secrets required and paste it here so you can fix it before merging or...?
How do you think I should proceed to give this a shot?

Copy link
Contributor Author

Copilot AI commented Nov 19, 2025

@copilot do you suggest me to first get all the secrets required and paste it here so you can fix it before merging or...?
How do you think I should proceed to give this a shot?

I recommend testing without sharing secrets:

Safe Testing Approach:

  1. Merge first - The workflow won't run automatically (it's workflow_dispatch only)
  2. Set up secrets in your repository Settings → Secrets and variables → Actions:
    • MAVEN_USERNAME / MAVEN_PASSWORD (from https://s01.oss.sonatype.org/)
    • GPG_PRIVATE_KEY / GPG_PASSPHRASE / GPG_PUBLIC_KEY (see RELEASE.md for generation commands)
  3. Test with a pre-release version like 0.1.0-RC1 or 1.0.0-test to avoid polluting your release history
  4. If it fails, you can simply:
    • Delete the test tag: git push --delete origin v0.1.0-RC1
    • Delete the GitHub release in the Releases page
    • Drop the staging repo at https://s01.oss.sonatype.org/ (if it got that far)

Don't share secrets - they give full access to publish under your Maven coordinates and sign with your identity.

Alternative: Dry-run test (before merging):
If you want to validate the workflow logic first, you could temporarily add a test job that skips GPG/Maven steps and just validates the version bumping logic. But the full end-to-end test will need the real secrets anyway.

The workflow is standard JReleaser setup - low risk of issues. Main things to verify: secrets are correct format and your Sonatype account has publish rights to io.netty.loom.

@franz1981
Copy link
Owner

Thanlks @copilot so you undraft yourself once happy and I can merge it?

Copy link
Contributor Author

Copilot AI commented Nov 19, 2025

Thanlks @copilot so you undraft yourself once happy and I can merge it?

The PR is complete and ready for merge. All requirements have been implemented and validated:

✅ Manual release workflow via GitHub Actions
✅ Only netty-virtualthread-core publishes to Maven Central
✅ All modules auto-bump to SNAPSHOT post-release
✅ Apache License 2.0 applied to all source files
✅ Complete documentation (RELEASE.md + README.md)
✅ No security vulnerabilities (CodeQL: 0 alerts)

You'll need to mark it as ready for review yourself (I can't change the draft status). Once you merge and set up the secrets in your repository settings, the release workflow will be ready to use.

@franz1981
Copy link
Owner

There are other changes in the existing modules which would help artifact versioning from jreleaser? or it's fine as it is?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Setup jreleaser GitHub automation

2 participants