This document describes how to release this component.
The component is released using GitHub automation.
At a high level, the process is as follows:
- The developer adds their private key/passphrase as repository secrets
- The workflow
stage_release
tags, builds/signs the release, and stages the release on a Nexus staging repository. This process uses the GitHub machine account kroxylicious-robot and a user token owned by Sonatype accountkroxylicious
account. - The stage release is verified using manual verification steps.
- The workflow
deploy_release
releases from the staged repository to Maven Central. - The developer removes their private key/passphrase as repository secrets.
You must be a member of the Kroxylicious organization and have access to create secrets within the kroxylicious-junit5-extension repository.
Create the following repository secrets:
Secret | Description |
---|---|
KROXYLICIOUS_RELEASE_PRIVATE_KEY |
Private key of the project admin conducting the release |
KROXYLICIOUS_RELEASE_PRIVATE_KEY_PASSPHRASE |
Passphrase used to protect the private key |
Use the Kroxylicious Team Developers Slack Channel to coordinate the release with the other developers. It is important no other work is merged to main during the release.
Run stage_workflow.
Set the release-version
argument to the version being release e.g. 0.7.0
.
This will:
- raise single PR that will contain two commits:
- the first will version the artefacts at
release-version
. Arelease-version
tag will point at this commit. - the second will re-open main for development, at the next snapshot.
- the first will version the artefacts at
- stage a release Nexus UI. It'll be named
iokroxylioustesting-nn
.
You can validate the staged artefacts by having a test application (we'll call it T
) that uses kroxylicious-junit5-extension use the Maven artefacts by making
temporary (local) changes to its POM.
- Find the staging repository in the Nexus UI. It'll be named
iokroxylioustesting-nn
. - Add a
<repositories>
that references the staging repository public url toT
's POM. - Update
T
's kroxylicious-junit5-extension dependency to refer to the<RELEASE_VERSION>
. - Run
T
build/test cycle but use an alternative cache location to be sure artefacts are being fetched. Check the build output, you'll see the kroxylicious-junit5-extension come from the staging location.
MAVEN_OPTS="-Dmaven.repo.local=/tmp/repository" mvn verify
If the build passes, proceed to make the release public.
The local changes made to T
's POM can be reverted.
- Run deploy_workflow
setting the
next-state
torelease
to publish the artefact. - Merge release PR (use Rebase and Merge strategy).
- Manually create the release notes for release by following the Draft a new release workflow. Copy the release note content from the CHANGELOG.md.
- Let Kroxylicious Team Developers know the release is finished.
If anything goes wrong, follow the steps in the next section.
If the release fails verification, use the deploy_workflow
to drop
the snapshot repository and close the PR.
The release tag needs to be removed manually:
git push --delete origin v0.7.0
Remove your private key/passphrase secrets from the repository secrets.