Skip to content

Narayana Release Process

Michael Musgrove edited this page Sep 9, 2024 · 22 revisions

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.

About release process

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).

⚠️
For the success of the process the access to Red Hat’s internal systems is needed (VPN connected, permissions for jboss nexus, …​).

Release Narayana main branch

Prerequisite before launching the main branch release

  • 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

Prerequisite before starting the shell script

  • 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 and password 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 name upstream

  • the script narayana-release-process.sh requires there is an existing directory ~/tmp (use mkdir -p $HOME/tmp before running the script)

    ⚠️
    do not use directory ~/tmp/narayana as the release process uses that directory for own purposes (use rm -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 have docker command being aliased from podman

Launch the release script

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 the pom.xml is currently at version 5.10.6.Final-SNAPSHOT)

  • there will be injected version 5.10.7.Final-SNAPSHOT as a new version to all pom.xml files (as the version which will be used for the local builds from the main branch)

  • WFLY-XXXX is the issue number of Narayana component upgrade for WildFly

Post release actions

  • 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 named 5.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 to Closed (check the Fixed 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 select Bulk Change)

    • check for jiras which could be in 5.next and marked as Duplicate or Won’t Fix or similar strange resolutions. Fix state of such jiras appropriately.

Post release actions for main branch

This does not apply for ../wiki/Creating-a-maintenance-branch[maintenance branches].

Release Narayana 4.17 branch

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)

Release Narayana 5.11 branch

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

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

Release Narayana 6.0 branch

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