-
Notifications
You must be signed in to change notification settings - Fork 176
Narayana Release Process
This page provides instruction that must be done in order when doing a release of Narayana.
ℹ️
|
Older version of instructions for releasing Narayana can be found at developer.jboss.org. |
The Narayana release process is semi-automated. It’s expected to be run "manually" on the local machine. The particular steps are automatized by shell script narayana-release-process.sh.
The local build environment has to satisfy several preconditions. Every Narayana branch has got a slightly different content and the preconditions may vary based on releasing version.
Narayana upstream is released from main branch and from maintenance branches (e.g. 4.17, 5.2, 5.5, 5.11).
-
Releasing from the main consists all parts like publishing docker images, updating website etc.
-
Releasing from a maintenance branch consists often a smaller scope, see notes on 4.17 release or 5.11 release.
|
For the success of the process the access to Red Hat’s internal systems is needed (VPN connected, permissions for jboss nexus, …). |
-
ensure the Narayana CI job runs without any issue (the job includes a full run of the test suite which also covers regression testing)
-
create a new WildFly issue which contains Narayana component upgrade (example WFLY-14701, WFLY-14872).
-
Select the 'Fix Version/s' and Priority (if appropriate).
-
Link it as "blocks" to any open WFLY issues that are resolved/alleviated by the current Narayana release.
-
-
inform the team at the mailing list
[email protected]
in advance that you are going to create a new release
-
ensure you are using JDK11 or higher (
java -version
) -
ensure you’ve set up the
$JAVA_HOME
(needed by idlj generation) -
ensure having permissions to push to Narayana artifacts to https://repository.jboss.org/nexus
-
the maven setup has to have defined credentials to jboss nexus access which are bound to server with id
jboss-releases-repository
. This can be setup in the~/.m2/settings.xml
containing definition<server> <id>jboss-releases-repository</id> <username>[username for jboss nexus connection]</username> <! e.g. [email protected] --> <password>[password for jboss nexus connection]</password> <!-- same to developers.redhat.com --> </server>
-
find out your
username
andpassword
to login to Red Hat JBoss jira at issues.redhat.com, you will logged in http://sso.redhat.com -
the directory you run the release at has to be the git repository which defines
remote
with nameupstream
-
when you doing brand new clone of the repository you can do with
git clone https://github.com/jbosstm/narayana.git -o upstream narayana-release
-
when you use existing repository folder you can do with
git remote add upstream https://github.com/jbosstm/narayana.git; git fetch upstream; git reset --hard upstream/main
-
-
the script
narayana-release-process.sh
requires there is an existing directory~/tmp
(usemkdir -p $HOME/tmp
before running the script)⚠️ do not use directory ~/tmp/narayana
as the release process uses that directory for own purposes (userm -rf ~/tmp/narayana
before running the script) -
as part of the release process there is publishing a new version of https://narayana.io web page. The page is built on the local machine. For this you have to get installed
awestruct
(see http://awestruct.org/getting_started/)ℹ️as a starting point you may try to use
yum groupinstall -y development-tools yum install -y rake ruby-devel libxslt-devel gcc-c++ gem nodejs
As non root user then install gems. The second list of them could be part of the awestruct dependencies (not sure though)
gem install awestruct bundler compass htmlcompressor uglifier cssminify gem install haml mime-types rest-client rack git guard guard-livereload logging oga parallel asciidoctor
-
be sure to know the password and username for
id.docker.com
as the release process will push the LRA docker images to https://hub.docker.com/u/jbosstm, ie. for https://id.docker.com-
plus you need a permission to do the push to https://hub.docker.com/u/jbosstm (
docker login docker.io
is executed) -
be sure to have a running docker daemon (you may use
systemctl start docker
) or havedocker
command being aliased frompodman
-
Go to the place where Narayana repository resides and run the script
# cd $PWD/narayana-release
./narayana-release-process.sh 5.10.6.Final 5.10.7.Final WFLY-XXXX
-
5.10.6.Final
is the release to be done (aka. the most probably thepom.xml
is currently at version5.10.6.Final-SNAPSHOT
) -
there will be injected version
5.10.7.Final-SNAPSHOT
as a new version to allpom.xml
files (as the version which will be used for the local builds from themain
branch) -
WFLY-XXXX
is the issue number of Narayana component upgrade for WildFly
-
Manage versions of the issues at https://issues.redhat.com
-
change the fixed version
5.next
to the released version. Then create a new version named5.next
again. All can be managed at https://issues.redhat.com/plugins/servlet/project-config/JBTM/versions -
change
Resolved
issues which were part of the release toClosed
(check theFixed Version
is one that you’ve just released) -
this can be done by Jira bulk operation over some search (e.g. over filter JBTM 5.next Resolved (go to top right corner to
Tools
and selectBulk Change
) -
check for jiras which could be in
5.next
and marked asDuplicate
orWon’t Fix
or similar strange resolutions. Fix state of such jiras appropriately.
-
This does not apply for ../wiki/Creating-a-maintenance-branch[maintenance branches].
-
Check that the quickstarts work with the artifacts that have been deployed to Maven central and also obtain the performance numbers for the release for publishing
-
Verify that all jobs in the CI view passed (if they fail the release can be considered as finished just wisely decide)
-
Email [email protected] with the text from [https://docs.google.com/a/redhat.com/document/d/1ZdZcj7_o5Sz-UWEYCzhWCBNq7gAFvfOEnfzo0lkjBeQ/edit?usp=sharing](https://docs.google.com/a/redhat.com/document/d/1ZdZcj7_o5Sz-UWEYCzhWCBNq7gAFvfOEnfzo0lkjBeQ/edit?usp=sharing)
-
Write a new message to Narayana google groups that Narayana was released. An example is at https://groups.google.com/g/narayana-users/c/3SMA1J-wsNo/m/CljPQW3hAAAJ
-
Consider publishing a tweet at narayana_io like: "Narayana https://t.co/Bhl82qsE3g released - find out more at https://t.co/BTTOC7lrCR #narayanaio"
-
Release notes are deduced from Jira at page https://issues.redhat.com/projects/JBTM?selectedItem=com.atlassian.jira.jira-projects-plugin%3Arelease-page (click on the desired version → at top of the page is a clickable link "Release Notes")
There is only a small addition to what is said above regarding 4.17
. The non-upstream
branches could not be released to maven central and they are tagged just on github. This is the process for 4.17
.
The tag itself is created by pre-release.sh
script (cd ./scripts/ ; ./pre-release.sh $CURRENT $NEXT)
The prerequisites are the same as for main branch. The post action consists only releasing the version in jira while placing the correct issues to the release.
The 5.11 release contains
-
release tag
-
uploads artifacts to downloads (http://www.jboss.org/jbosstm/downloads/)
The 5.11 release omits
-
creating a PR with component upgrade to WildFly linking the WFLY issue
-
creating and uploading the LRA coordinator docker image
-
building and changing the content of the http://narayana.io website
The prerequisites are the same as for main branch. The post action consists only releasing the version in jira while placing the correct issues to the release.
The 6.0 maintenance branch releases contain
-
release tag
-
although we do not release the quickstarts there is a requirement to tag the repo (with the same release tag used for the main repo maintenance branch)
The 6.0 release omits
-
creating a PR with component upgrade to WildFly linking the WFLY issue
-
releasing the quickstarts (although a tag is required)
-
creating and uploading the LRA coordinator docker image
-
building and changing the content of the http://narayana.io website