Version 257

    This page provides a list of instructions that must be done in order when doing a release of Narayana.

    MASTER

    Notify the development team of your intention to do a release. Try to give as much notice as possible but at least an hour is best:

    "I am going to do a release on master, if you have anything that is waiting please let me know. I will start the release at <TIME> <TIMEZONE>"

     

    Ensure you have a clean check out

    cd $NARAYANA_SRC

    ./narayana-release-process.sh

    This will print out the arguments to use and note you that currently there is at least one manual step at the end to build the blacktie distribution on Windows

    NOTE: If the release has a "New Feature" (as opposed to "Enhancement" or "Bug") then you need to increment the minor version, if not just the micro version is fine.

    Push Upstream

    Push the release to WildFly

    1. Update $WFLYISSUE
      1. Select a 'Fix Version/s' and Priority (if appropriate)
      2. Link it as "blocks" to any open WFLY issues that are resolved/alleviated by the current Narayana release.
      3. Add a link to the release notes in the description. For example: https://issues.jboss.org/browse/JBTM/fixforversion/12329061/?selectedTab=com.atlassian.jira.plugins.jira-development-integration-plugin:release-report-tabpanel
    2. Run: http://albany.eng.hst.ams2.redhat.com/job/release-narayana-AS-PR/ with the following parameters:
      1. TAG_NAME=$CURRENT
      2. WFLY_PR_BRANCH=$WFLYISSUE
    3. Make sure the release quickstart job is triggered by the previous job and then runs successfully
    4. Raise the pull request using our branch - notify the dev team via email of the pull request link so that we can monitor it
    5. Generate the performance blog text. To run the job against a particular release you will need to raise a pull request on jbosstm/artifacts - GitHub with a magic file called SHAtoBuild.txt in the root of the repo containing the tag name you want to build.
    6. Once merged:
      1. Mark $WFLYISSUE resolved
      2. Rebase the jbosstm/jboss-as 5_BRANCH branch with the updated wildfly master branch:
        1. git log - make a list of commits weren't in the pull, e.g. the roll forward to next snapshot

        2. git fetch upstream master
        3. git reset --hard upstream/master
        4. git cherry-pick commits from step 1
        5. git push origin 5_BRANCH -f
      3. Promote the release through the following channels:
        1. Email jbossts-announce@lists.jboss.org with the text from https://docs.google.com/a/redhat.com/document/d/1ZdZcj7_o5Sz-UWEYCzhWCBNq7gAFvfOEnfzo0lkjBeQ/edit?usp=sharing
        2. Blog: fixversion = "$CURRENT" AND project in (JBTM) AND priority >= major AND issuetype not in (Bug, task) AND resolution not in ("Duplicate Issue", Rejected, "Won't Fix", "Out of Date", "Cannot Reproduce Bug")
        3. Add blog text for the competitor comparison. The text to use in the blog and accompanying bar chart should be available from jbosstm/artifacts · GitHub. Each run of the comparison job produces two artifacts artifacts/jobs/tm-comparison at master · jbosstm/artifacts · GitHub. The git commit comment identifies which release the benchmark was produced from and the node, choose the correct tag and from node haverstraw for the release you are performing. The relevant files to include in the blog are:
          1. artifacts/benchmark-output.txt at master · jbosstm/artifacts · GitHub - use the text from the section marked "Blog Text"
          2. artifacts/benchmark.png at master · jbosstm/artifacts · GitHub - this a bar chart representation of the table of numbers contained in the benchmark-output.txt file

    5.2 branch / EAP 7 Differences

    Make sure commits merged to master first

    1. ./narayana-release-process.sh // Will give latest parameters
    2. Mark version as released in Jira and create next version: https://issues.jboss.org/plugins/servlet/project-config/JBTM/versions
    3. Announce the release:
      1. Hi, The Narayana team are proud to announce the latest maintenance release for the 5.2 branch. The release notes for this version are available here: https://issues.jboss.org/browse/JBTM/fixforversion/12330389/ Thanks for using Narayana!
    4. Create your own JBEAPISSUE (Agile Board - JBoss Issue Tracker ) (make sure to set component, fix version, priority, release notes link, commits link)
    5. cd jboss-as
    6. git fetch upstream
    7. git reset --hard upstream-eap7/7.0.x
    8. git checkout -b ${JBEAPISSUE}
    9. sed -i "s/${CURRENT}-redhat-1/${NEXT}/g" pom.xml
    10. git commit -am "{JBEAPISSUE } Upgrade to Narayana ${CURRENT}"
    11. ./build.sh clean install (run tests as appropriate at this time - AT LEAST RUN ANY JBEAP WITH A REPRODUCIBLE TEST CASE)
    12. git-req 7.0.x
    13. Open JBEAPISSUE and click Link Pull Request (with link to pull)

     

    4.17 branch / EAP 6 Differences

    1. ./narayana-release-process.sh // Will give latest parameters
    2. Mark version as released in Jira and create next version: https://issues.jboss.org/plugins/servlet/project-config/JBTM/versions
    3. Announce the release:
      1. Hi, The Narayana team are proud to announce the latest maintenance release for the 4.17 branch. The release notes for this version are available here: https://issues.jboss.org/browse/JBTM/fixforversion/12330389/ Thanks for using Narayana!

    SVN Differences (svn)

    #Make sure your checkout has no local changes

    svn update

    svn status

    POINT_VERSION=5

    NEXT_POINT_VERSION=6

    #Update the version in text files

    find . -name \*.java -o -name \*.xml -o -name \*.properties -o -name \*.ent -o -name \INSTALL -o -name \README | grep -v ".svn" | grep -v target | xargs grep  -l "4[._]16" | xargs sed -i "s/4\([._]\)16\([._]\)${POINT_VERSION}\([._]\)Final-SNAPSHOT/4\116\2$POINT_VERSION\3Final/"

    svn commit -m "Updated to version 4.16.$POINT_VERSION.Final"

    #Tag the release:

    svn cp https://svn.jboss.org/repos/labs/labs/jbosstm/branches/JBOSSTS_4_16 https://svn.jboss.org/repos/labs/labs/jbosstm/tags/JBOSSTS_4_16_${POINT_VERSION}_Final/ -m "4.16.$POINT_VERSION"

    #Bump to next version using similar find to above

    find . -name \*.java -o -name \*.xml -o -name \*.properties -o -name \*.ent -o -name \INSTALL -o -name \README | grep -v ".svn" | grep -v target | xargs grep  -l "4[._]16" | xargs sed -i "s/4\([._]\)16\([._]\)${POINT_VERSION}\([._]\)Final/4\116\2${NEXT_POINT_VERSION}\3Final-SNAPSHOT/"

    svn commit -m "Updated to version 4.16.${NEXT_POINT_VERSION}.Final-SNAPSHOT"

    Narayana upload (svn)

    #Build and deploy the release to nexus staging and the website:

    mkdir ~/filemgmt.jboss.org/

    sshfs -o defer_permissions jbosstm@filemgmt.jboss.org: ~/filemgmt.jboss.org/

    svn switch https://svn.jboss.org/repos/labs/labs/jbosstm/tags/JBOSSTS_4_16_${NEXT_POINT_VERSION}_Final/

    ant -f build-release-pkgs.xml dist mvn-repository downloads

    JBoss Transaction SPI

    These instructions apply to the maintainance SPI branch:

    export CURRENT=7.0.1.Final

    export NEXT=7.1.0.Final

    git clone git@github.com:jbosstm/jboss-transaction-spi.git

    vi pom.xml # remove -SNAPSHOT from $CURRENT

    git add pom.xml

    git commit -m "Updated to $CURRENT"

    git tag $CURRENT

    git checkout $CURRENT

    mvn deploy

    # this will deploy to the jboss staging repo (now is your chance to do any final testing before releasing the artifact)

    # push the tag

    git push origin $CURRENT

    git checkout master

    vi pom.xml # change version number to $NEXT-SNAPSHOT

    git add pom.xml

    git commit -m "Updated to $NEXT-SNAPSHOT"

    git push origin

    Emergency Narayana release on old versions

    This info is only for use in case of emergency where you can't release a community version on a later minor due to unstable changes in say WildFly:

    0. Go to your narayana clone

    1. git checkout 5.0.4.Final

    2. git cherry-pick b7b6e3ad3781ebc2c08c544dc9ee8d678b12fdc2

    3. find . -name \*.java -o -name \*.xml -o -name \*.properties -o -name \*.ent -o -name \INSTALL -o -name \README -o -name pre-release-vars.sh -o -name \*.sh -o -n ame \*.bat -o -name \*.cxx -o -name \*.c -o -name \*.cpp -o -iname \makefile | grep -v ".svn" | grep -v ".git" | grep -v target | grep -v .idea | xargs sed -i "s/5.0.4.Final/5.0.5.Final/g"

    4. ./build.sh clean install -DskipTests

    5. git commit -am "Updated to 5.0.5.Final"

    6. mvn deploy -DskipTests -gs tools/maven/conf/settings.xml -Prelease

    7. Create a WFLY 9 "Component Upgrade" issue to upgrade to 5.0.x (https://issues.jboss.org/secure/CreateIssue!default.jspa) with summary "Upgrade Narayana to 5.0.5.Final", Component "Transactions", Fix Version "9.0.0.CR2", Assign to yourself, "Create", link it to any issues in WFLY that are "incorporates"

    8. Go to your wildfly clone

    9. git fetch upstream

    10. git checkout -b WFLY-4655 upstream/9.x

    11. Modify pom.xml to upgrade Narayana

    12. ./build.sh clean install -DskipTests -Prelease

    13. It is then possible to run some tests if you think it would be prudent, at least try to start the server: ./build/target/wildfly-9.0.0.CR2-SNAPSHOT/bin/standalone.sh

    14. git commit -am "WFLY-4655 Upgrade to Narayana 5.0.5.Final"

    15. git push origin WFLY-4655

    16. Go back to your narayana clone

    17. git tag 5.0.5.Final

    18. git push upstream --tags

    19. Check your tag is there and as expected on https://github.com/jbosstm/narayana/commits/5.0.5.Final

    20. Go onto https://repository.jboss.org/nexus/index.html#welcome

    21. Find the staging repository and close, release it

    22. Raise the pull request on WFLY and link it to the WFLY Jira issue