-
Notifications
You must be signed in to change notification settings - Fork 7
LRA Release Process
This page provides all instructions to release LRA from its main
branch.
The LRA release procedure is semi-automated. It’s expected to be run "manually" on a local machine. Most steps are automatised by the shell script narayana-release-process.sh. LRA is always released from the main branch.
|
To release LRA, access to Red Hat’s internal systems is needed (e.g. VPN connected, permissions for jboss nexus, etc.). |
The local environment where the release will take place has to satisfy several prerequisites.
-
There should not be any issue tracker in the JBTM project, related to LRA, with priority
blocker
-
Use the following query to check this requisite
project = JBTM AND priority = Blocker AND component = LRA AND resolution = Unresolved
-
In case there are blockers, discuss them with the team
-
-
Ensure LRA’s GitHub Actions run successfully without any issue
-
Ensure that JDK17 or higher (
java -version
) is used -
Ensure
$JAVA_HOME
is set up (it is needed for the idlj generation) -
Ensure that the user running the release script has permissions to push Narayana’s artifacts to https://repository.jboss.org/nexus
-
Maven’s
settings.xml
should have the credentials defined for jboss nexus -
To do so, the server with id
jboss-releases-repository
should be defined in~/.m2/settings.xml
<settings> <servers> <server> <id>jboss-releases-repository</id> <username>[username for jboss nexus connection]</username> <! e.g. [email protected] --> <password>[token for jboss nexus connection]</password> </server> </servers> </settings>
-
username
andtoken
can be obtained through Nexus
-
-
Ensure that Maven’s
settings.xml
includes the following profile:<settings> <profiles> <profile> <id>release</id> <activation> <property> <name>release</name> </property> </activation> <properties> <gpg.useagent>true</gpg.useagent> <gpg.keyname>...replace with your key's ID...</gpg.keyname> </properties> </profile> </profiles> </settings>
-
Ensure that your
.bashrc
/.zshrc
includesexport GPG_TTY=$(tty)
-
Execute
source ~/.bashrc
in the terminal you will use to run the release script (source ~/.zshrc
for MacOS)
-
-
Clone your fork of LRA and then add a
remote
reference to[email protected]:jbosstm/lra.git
by executinggit remote add upstream [email protected]:jbosstm/lra.git
-
When using an existing repository, run the following command:
git fetch upstream; git reset --hard upstream/main
-
-
The
narayana-release-process.sh
script requires the existence of the directory~/tmp
(usemkdir -p $HOME/tmp
before running the script)⚠️ Ensure you do not have or need ~/tmp
before executing the release process as the release process uses that directory for its own purpose (remove~/tmp
before running the script)
Go to the directory where the Narayana repository is and run the script:
# cd $PWD/narayana-release
./narayana-release-process.sh 1.0.2.Final 1.0.3.Final jbosstm
-
1.0.2.Final
is the release to be done (most likely the version declared in thepom.xml
file withoutSNAPSHOT
, e.g.1.0.2.Final-SNAPSHOT
) -
The new version will be used to update all
pom.xml
files in the code base, e.g.1.0.3.Final-SNAPSHOT
-
When the
narayana-release-process.sh
script executes, LRA artifacts are deployed to a private Nexus repository callednarayana-staging
-
The community won’t be able to access the newly released version’s artifacts until they’ve been moved to the public Nexus repository,
narayana
. -
It’s essential to run the validation job before deploying new artifacts to the Nexus public repository. This step ensures that the artifacts meet all Maven Central requirements
-
If the validation job passes all checks, the new artifacts can be deployed to the
narayana
repository-
cd ~/tmp/lra/1.0.2.Final/lra/
-
mvn nxrm3:staging-move -Dnexus.staging.tag=lra-1.0.2.Final -DreleaseStaging
-
-
If the validation job didn’t pass all checks, the new artifacts can be deleted
-
cd ~/tmp/lra/1.0.2.Final/lra/
-
mvn nxrm3:staging-delete -Dnexus.staging.tag=lra-1.0.2.Final -DreleaseStaging
-
-
-
After the artifacts have been moved to the
narayana
repository, the validation job for that repository must be executed-
The validation job is expected to succeed, as the validation for
narayana-staging
has already passed -
If that’s the case, execute the following commands to complete the release
-
cd ~/tmp/lra/1.0.2.Final/lra/
-
git push origin main --tags
-
-
-
-
Create a new release version in the GitHub repository
-
Select the tag just created
-
The
Release title
should be the same version used for the tag just created (e.g.1.0.2.Final
) -
It is possible to generate
Release notes
by selecting the previous tag and then let GitHub generate the text for you -
Set as latest release should be selected, if applicable
-
-
Once the new LRA release has been created, create a new WildFly issue to update the version of LRA in WildFly
-
Past examples can be query:
project = WFLY AND text~"Update to Narayana LRA" ORDER BY created DESC
-
Select the 'Fix Version/s' and Priority (if appropriate).
-
Add a description to Wildfly issue (e.g. WFLY-20690), for example the release link from GitHub
-
Link it as "blocks" to any open WFLY issues that are resolved/alleviated with the new LRA release
-
When Dependabot opens a PR to bump the LRA version, link the relevant WildFly issue tracker ticket to the PR
-
-
A PR for Quarkus is automatically opened by the dependabot (checking the PR is good)
-
Check that the artifacts that have been deployed to Maven central (it might take a day or two)
-
Email [email protected] modifying this text:
subject:LRA <VERSION>.Final is released Hello, The Narayana team are proud to announce the release of version <VERSION>.Final of LRA! The maven artifacts for the release are available at maven central. << (Optional) Description of the main achievements of this release >> Release: https://github.com/jbosstm/lra/releases/tag/<VERSION>.Final Diff: https://github.com/jbosstm/lra/compare/<PREVIOUS_VERSION>.Final...<VERSION>.Final Happy coding, The Narayana team
-
NOTE: If you don’t immediately see the message in the archive, it is very likely that it needs to be approved
-
-
Send the same message to Narayana google group to inform the community that a new version of LRA was released
-
Announce that ‘LRA x.x.x.Final` is available on Zulip
-
Consider publishing a tweet at narayana_io like: "Narayana https://lists.jboss.org/archives/list/[email protected]/thread/6H4I5KPSPIW7LGGLPVS7K2D4D74Q74UH/ released - find out more at https://lists.jboss.org/archives/list/[email protected]/thread/6H4I5KPSPIW7LGGLPVS7K2D4D74Q74UH/ #narayanaio"