-
Notifications
You must be signed in to change notification settings - Fork 177
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 master branch and from maintenance branches (e.g. 4.17, 5.2, 5.5, 5.11).
-
Releasing from the master 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
-
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 JDK8 (
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 repository that you process with the release has to define
upstream
remote-
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/master
-
-
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
-
-
use Python 2 as the release scripts are written for version
2
. It’s possible to temporarily switch to version 2 withvirtualenv -p /usr/bin/python2.7 --distribute /tmp/temp-python; source /tmp/temp-python/bin/activate
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 themaster
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].
-
Verify that all jobs in the view http://narayanaci1.eng.hst.ams2.redhat.com/view/Release/ 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)