WildFly Core Release Process

Version 10

    Following is the process I'm using to do releases of WildFly Core.

     

    Make Sure Core Will Integrate Into Full

     

    No point doing a core release if you won't be able to merge it into full.

     

    Check the latest WildFly Core Integration results

     

    You're about to tag WFCORE master and integrate it into full, so have a look at the most recent CI run of that integration and don't bother if it's all broken:

     

    https://ci.wildfly.org/viewType.html?buildTypeId=WF_WildFlyCoreIntegration

     

    Get Any PRs Merged

     

    I always get PRs tested on master-ignore, including against full, before doing release stuff. So, if you have some PRs you want to get into the release, do that first. Don't mix PR merging with the release steps. When you test master-ignore, run the integration-into-full job to be sure you see if any PRs break full:

     

    https://ci.wildfly.org/viewType.html?buildTypeId=WF_WildFlyCoreMasterIgnoreIntegration

     

    If you merge something without going through master-ignore, just relying on the pull player tests of the PR against full, make sure those tests were current.

     

    Building, Tagging and Deploying the Release

     

    Now you're ready to release.

     

    Create a branch for the release

     

    I do most everything in a branch.

     

    taozi:wildfly-core bstansberry$ git checkout master
    Already on 'master'
    taozi:wildfly-core bstansberry$ git fetch upstream
    remote: Counting objects: 26, done.
    remote: Compressing objects: 100% (17/17), done.
    remote: Total 26 (delta 0), reused 0 (delta 0)
    Unpacking objects: 100% (26/26), done.
    From github.com:wildfly/wildfly-core
       eedd211..9991777  master     -> upstream/master
    taozi:wildfly-core bstansberry$ git rebase upstream/master
    First, rewinding head to replay your work on top of it...
    Fast-forwarded master to upstream/master.
    taozi:wildfly-core bstansberry$ git push mygithub master
    Counting objects: 146, done.
    Delta compression using up to 8 threads.
    Compressing objects: 100% (17/17), done.
    Writing objects: 100% (26/26), 3.28 KiB | 0 bytes/s, done.
    Total 26 (delta 7), reused 0 (delta 0)
    To git@github.com:bstansberry/wildfly-core.git
       eedd211..9991777  master -> master
    taozi:wildfly-core bstansberry$ git checkout -b rel15
    Switched to a new branch 'rel15'
    taozi:wildfly-core bstansberry$ git status
    On branch rel15
    nothing to commit, working directory clean
               

    Update the poms

     

    I have a script located in the root dir of all my source checkouts that updates poms. I just edit it and run it. I could parameterize it, but I think editing it is less work than typing the params. Here it is, in the state I left it after doing the 1.0.0.Alpha14 release:

     

    #!/bin/sh
    
    find . -type f -name "pom.xml" -print0 | xargs -0 -t sed -i "" -e 's/1.0.0.Alpha14/1.0.0.Alpha15-SNAPSHOT/g'
              

     

    So I edit the above, changing Alpha14 into Alpha15-SNAPSHOT and Alpha15-SNAPSHOT into Alpha15.

     

    #!/bin/sh
    
    find . -type f -name "pom.xml" -print0 | xargs -0 -t sed -i "" -e 's/1.0.0.Alpha15-SNAPSHOT/1.0.0.Alpha15/g'
              

     

    Then run it:

     

    taozi:wildfly-core bstansberry$ ../../change-version.sh 
    sed -i  -e s/1.0.0.Alpha15-SNAPSHOT/1.0.0.Alpha15/g ./build/pom.xml ./cli/pom.xml ./controller/pom.xml ./controller-client/pom.xml ./core-feature-pack/pom.xml ./core-model-test/framework/pom.xml ./core-model-test/pom.xml ./core-model-test/test-controller-optional/pom.xml ./core-model-test/tests/pom.xml ./core-security/api/pom.xml ./core-security/implementation/pom.xml ./core-security/pom.xml ./deployment-repository/pom.xml ./deployment-scanner/pom.xml ./dist/pom.xml ./domain-http/error-context/pom.xml ./domain-http/interface/pom.xml ./domain-http/pom.xml ./domain-management/pom.xml ./host-controller/pom.xml ./io/pom.xml ./io/subsystem/pom.xml ./io/tests/pom.xml ./jmx/pom.xml ./launcher/pom.xml ./logging/pom.xml ./management-client-content/pom.xml ./model-test/pom.xml ./network/pom.xml ./patching/pom.xml ./platform-mbean/pom.xml ./pom.xml ./process-controller/pom.xml ./protocol/pom.xml ./remoting/pom.xml ./remoting/subsystem/pom.xml ./remoting/tests/pom.xml ./request-controller/pom.xml ./server/pom.xml ./subsystem-test/framework/pom.xml ./subsystem-test/pom.xml ./subsystem-test/test-controller-optional/pom.xml ./subsystem-test/tests/pom.xml ./system-jmx/pom.xml ./testsuite/domain/pom.xml ./testsuite/manualmode/pom.xml ./testsuite/patching/pom.xml ./testsuite/pom.xml ./testsuite/rbac/pom.xml ./testsuite/shared/pom.xml ./testsuite/standalone/pom.xml ./testsuite/test-runner/pom.xml ./threads/pom.xml ./version/pom.xml
    taozi:wildfly-core bstansberry$ git status
    On branch rel15
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
    
     modified:   build/pom.xml
     modified:   cli/pom.xml
     modified:   controller-client/pom.xml
    ....
     modified:   testsuite/test-runner/pom.xml
     modified:   threads/pom.xml
     modified:   version/pom.xml
    
    no changes added to commit (use "git add" and/or "git commit -a")
    taozi:wildfly-core bstansberry$
               

     

    Confirm there's no incorrect "-SNAPSHOT" left around anywhere:

     

    taozi:wildfly-core bstansberry$ git grep "\-SNAPSHOT"
    host-controller/src/test/java/org/jboss/as/domain/controller/operations/ReadMasterDomainModelHandlerTestCase.java:        hostInfo.get(RELEASE_VERSION).set("8.0.0.Alpha1-SNAPSHOT"
    model-test/src/main/java/org/jboss/as/model/test/ModelTestControllerVersion.java:                VERSION = "8.0.0.Beta2-SNAPSHOT";
    testsuite/rbac/pom.xml:  -Djboss.home=${workspace_loc:jboss-as-build}/target/jboss-as-9.0.0.Alpha2-SNAPSHOT
    (END) 
               

     

    Those are all ok.

     

    Build and Test the updated branch

     

    We use the "jboss-release" profile from the org.jboss:jboss-parent pom when doing releases, so specify this using -Pjboss-release: We also want to use the "release" profile to get an full zip built in the core-dist module, so -Prelease as well.

     

    taozi:wildfly-core bstansberry$ mvn clean install -Pjboss-release -Prelease -DallTests
    [INFO] Scanning for projects...
    
    . . . . 
    
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 25:16 min
    [INFO] Finished at: 2014-12-23T13:13:49-06:00
    [INFO] Final Memory: 78M/616M
    [INFO] ------------------------------------------------------------------------
    taozi:wildfly-core bstansberry$
        

     

     

    Test Against Full

     

    Confirm it works in full as well, by building latest full but overriding the version of core. I don't run tests here, since we know from "Make Sure Core Will Integrate Into Full" above that core was good. I just want to compile to smoke test for any pom issues.

     

    I'm going to send up a PR later to update full, so I create a branch for that PR, modify it and build it.

     

    taozi:wildfly bstansberry$ git checkout -b upcore15
    Switched to a new branch 'upcore15'
    taozi:wildfly bstansberry$ vim pom.xml
    
    ... do vim stuff to change the pom
    
    taozi:wildfly bstansberry$ mvn clean install -DallTests -DskipTests
    
    . . . . 
    
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 03:34 min
    [INFO] Finished at: 2014-12-23T13:24:37-06:00
    [INFO] Final Memory: 406M/946M
    [INFO] ------------------------------------------------------------------------
    taozi:wildfly bstansberry$ 
             

     

     

    Commit, Merge

     

    Everything looks good, so time to commit the pom change, and merge it into local master.

     

    taozi:wildfly-core bstansberry$ git status
    On branch rel15
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
    
     modified:   build/pom.xml
    
    . . . .  other files listed, all as expected
    
    taozi:wildfly-core bstansberry$ git commit -a -m "Prepare for 1.0.0.Alpha15 release"
    [rel15 0ae34e9] Prepare for 1.0.0.Alpha15 release
     54 files changed, 68 insertions(+), 68 deletions(-)
    taozi:wildfly-core bstansberry$ git checkout master
    Switched to branch 'master'
    taozi:wildfly-core bstansberry$ git merge --ff-only rel15
    Updating 9991777..0ae34e9
    Fast-forward
     build/pom.xml                                    | 2 +
    
    . . . .  other files listed, all as expected
    
    taozi:wildfly-core bstansberry$ git log
    commit 0ae34e936c19a18f342070dc115c7ec3a2337016
    Author: Brian Stansberry <brian.stansberry@redhat.com>
    Date:   Tue Dec 23 13:28:26 2014 -0600
    
        Prepare for 1.0.0.Alpha15 release
    
    commit 9991777013aa89455c09129df8060245abf8f9cf
    Merge: eedd211 e660904
    Author: Brian Stansberry <brian.stansberry@redhat.com>
    Date:   Tue Dec 23 11:10:51 2014 -0600
    
        Merge pull request #414 from aloubyansky/WFCORE-486-cli-echo
    
    . . . other log messages, all as expected
    
        
        https://issues.jboss.org/browse/WFCORE-486 cli echo command should not o...
             

    Deploy to Nexus

     

    Simple maven deploy; again we use the jboss-release and release profiles. I don't run the testsuite again.

     

    taozi:wildfly-core bstansberry$ mvn deploy -Pjboss-release -Prelease -DallTests -DskipTests
    [INFO] Scanning for projects...
    
    ....
    
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 05:37 min
    [INFO] Finished at: 2014-12-23T13:47:30-06:00
    [INFO] Final Memory: 92M/247M
    [INFO] ------------------------------------------------------------------------
    taozi:wildfly-core bstansberry$
        

     

    Release on Nexus

     

    See "Closing the Staging Repository" and "Releasing the Staging Repository" on Maven Deploying a Release

     

    Confirm Content is Available in Nexus

     

    I blow away the core part of my local maven repo and rebuild full to confirm that it can get everything from nexus. Again, don't run tests, just compile.

     

    taozi:wildfly bstansberry$ rm -rf ~/.m2/repository/org/wildfly/core/
    taozi:wildfly bstansberry$ mvn install -DallTests -DskipTests
    [INFO] Scanning for projects...
    Downloading: https://repository.jboss.org/nexus/content/groups/public-jboss/org/wildfly/core/wildfly-core-parent/1.0.0.Alpha15/wildfly-core-parent-1.0.0.Alpha15.pom
    Downloaded: https://repository.jboss.org/nexus/content/groups/public-jboss/org/wildfly/core/wildfly-core-parent/1.0.0.Alpha15/wildfly-core-parent-1.0.0.Alpha15.pom (67 KB at 40.8 KB/sec)
    . . . 
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 01:58 min
    [INFO] Finished at: 2014-12-23T13:57:17-06:00
    [INFO] Final Memory: 262M/727M
    [INFO] ------------------------------------------------------------------------
    taozi:wildfly bstansberry$
           

    Tag and Push to Github

     

    taozi:wildfly-core bstansberry$ git tag 1.0.0.Alpha15
    taozi:wildfly-core bstansberry$ git push upstream master --tags
    Counting objects: 713, done.
    Delta compression using up to 8 threads.
    Compressing objects: 100% (107/107), done.
    Writing objects: 100% (109/109), 10.62 KiB | 0 bytes/s, done.
    Total 109 (delta 56), reused 0 (delta 0)
    To git@github.com:wildfly/wildfly-core.git
       9991777..0ae34e9  master -> master
     * [new tag]         1.0.0.Alpha15 -> 1.0.0.Alpha15
    taozi:wildfly-core bstansberry$ git push mygithub master
    Counting objects: 657, done.
    Delta compression using up to 8 threads.
    Compressing objects: 100% (107/107), done.
    Writing objects: 100% (109/109), 10.57 KiB | 0 bytes/s, done.
    Total 109 (delta 56), reused 0 (delta 0)
    To git@github.com:bstansberry/wildfly-core.git
       9991777..0ae34e9  master -> master
    taozi:wildfly-core bstansberry$
           

    Move on to the next release

     

    I edit my script to reflect the latest versions:

     

    #!/bin/sh
    
    find . -type f -name "pom.xml" -print0 | xargs -0 -t sed -i "" -e 's/1.0.0.Alpha15/1.0.0.Alpha16-SNAPSHOT/g'
           

     

    and run it:

     

    taozi:wildfly-core bstansberry$ ../../change-version.sh 
    sed -i  -e s/1.0.0.Alpha15/1.0.0.Alpha16-SNAPSHOT/g ./build/pom.xml ./cli/pom.xml ./controller/pom.xml ./controller-client/pom.xml ./core-feature-pack/pom.xml ./core-model-test/framework/pom.xml ./core-model-test/pom.xml ./core-model-test/test-controller-optional/pom.xml ./core-model-test/tests/pom.xml ./core-security/api/pom.xml ./core-security/implementation/pom.xml ./core-security/pom.xml ./deployment-repository/pom.xml ./deployment-scanner/pom.xml ./dist/pom.xml ./domain-http/error-context/pom.xml ./domain-http/interface/pom.xml ./domain-http/pom.xml ./domain-management/pom.xml ./host-controller/pom.xml ./io/pom.xml ./io/subsystem/pom.xml ./io/tests/pom.xml ./jmx/pom.xml ./launcher/pom.xml ./logging/pom.xml ./management-client-content/pom.xml ./model-test/pom.xml ./network/pom.xml ./patching/pom.xml ./platform-mbean/pom.xml ./pom.xml ./process-controller/pom.xml ./protocol/pom.xml ./remoting/pom.xml ./remoting/subsystem/pom.xml ./remoting/tests/pom.xml ./request-controller/pom.xml ./server/pom.xml ./subsystem-test/framework/pom.xml ./subsystem-test/pom.xml ./subsystem-test/test-controller-optional/pom.xml ./subsystem-test/tests/pom.xml ./system-jmx/pom.xml ./testsuite/domain/pom.xml ./testsuite/manualmode/pom.xml ./testsuite/patching/pom.xml ./testsuite/pom.xml ./testsuite/rbac/pom.xml ./testsuite/shared/pom.xml ./testsuite/standalone/pom.xml ./testsuite/test-runner/pom.xml ./threads/pom.xml ./version/pom.xml
           

     

    and build it:

     

    taozi:wildfly-core bstansberry$ mvn install -DallTests -DskipTests
    [INFO] Scanning for projects...
    . . . .
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 38.704 s
    [INFO] Finished at: 2014-12-23T14:04:42-06:00
    [INFO] Final Memory: 86M/494M
    [INFO] ------------------------------------------------------------------------
    taozi:wildfly-core bstansberry$
          

     

    and commit and push to github:

     

    taozi:wildfly-core bstansberry$ git status
    On branch master
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
    
     modified:   build/pom.xml
    .... other poms as expected
     modified:   version/pom.xml
    
    no changes added to commit (use "git add" and/or "git commit -a")
    taozi:wildfly-core bstansberry$ git commit -a -m "Next is 1.0.0.Alpha16"
    [master e8a760e] Next is 1.0.0.Alpha16
     54 files changed, 68 insertions(+), 68 deletions(-)
    taozi:wildfly-core bstansberry$ git push upstream master
    Counting objects: 805, done.
    Delta compression using up to 8 threads.
    Compressing objects: 100% (107/107), done.
    Writing objects: 100% (109/109), 11.01 KiB | 0 bytes/s, done.
    Total 109 (delta 56), reused 0 (delta 0)
    To git@github.com:wildfly/wildfly-core.git
       0ae34e9..e8a760e  master -> master
    taozi:wildfly-core bstansberry$ git push mygithub master
    Counting objects: 733, done.
    Delta compression using up to 8 threads.
    Compressing objects: 100% (107/107), done.
    Writing objects: 100% (109/109), 10.99 KiB | 0 bytes/s, done.
    Total 109 (delta 56), reused 0 (delta 0)
    To git@github.com:bstansberry/wildfly-core.git
       0ae34e9..e8a760e  master -> master
    taozi:wildfly-core bstansberry$
          

     

     

    JIRA Work

    Cleanup "Pull Request Sent" JIRAs

     

    Lots of folks don't resolve their issues after their PR is merged. So look for issues in "Pull Request Sent" state and resolve any of them where the PR has been merged.

     

    https://issues.jboss.org/issues/?jql=project%20%3D%20WFCORE%20AND%20status%20%3D%20%22Pull%20Request%20Sent%22%20ORDER%20BY%20priority%20DESC

     

    Add the Next Release Version

     

    Add an entry for the next Fix Version into JIRA if there isn't one already.

     

    https://issues.jboss.org/plugins/servlet/project-config/WFCORE/versions

     

    Select the little rectangle of dots on the left of your new row and drag it to move your release into the proper spot in the sequence of versions.

     

    Release the Current Version

     

    On the screen above, select the version you've just released, click the Update button and choose release. In the dialog, enter the current date. If it asks you what to do with any unresolved issues against the release, choose to move them to the next version (the one you just added.)

     

    Upgrading WildFly Full

     

    Update the CI Tests of Core against Full

     

    Critical step!! If this bit isn't done, our CI runs of core against full will produce meaningless results, possibly leading to hard to unravel regressions!

     

    There are 4 CI jobs on brontes that involve running the full testsuite against a snapshot build of core. All of these work by using system property -Dversion.org.wildfly.core to override the version of core specified in full's pom.xml. So, edit the configuration settings in the following locations to change the value of the "wildfly.core.version" build parameter from whatever it is to the next version, e.g. in my case from "1.0.0.Alpha15-SNAPSHOT" to "1.0.0.Alpha16-SNAPSHOT".

     

    All WFLY jobs that use Wildfly core for testing

     

    https://ci.wildfly.org/admin/editProject.html?projectId=WF&tab=projectParams


    Pull player job that tests WFCORE PRs against full

     

    https://ci.wildfly.org/admin/editProject.html?projectId=WildFlyCore_PullRequest&tab=projectParams

     

    There is also a job that allows experimental tests of the EAP dev branch against the latest WildFly Core master or your own topic branches. To make sure it runs correctly, update the 'wildfly.core.upstream.version' param used by the EAP 7 build configs. DO NOT UPDATE wildfly.core.version!!! THAT PARAM SHOULD POINT TO THE MAINTENANCE BRANCH VERSION USED IN CPs. The config is at:

     

    http://brontes.lab.eng.brq.redhat.com/admin/editProject.html?projectId=eap7&tab=projectParams

     

    Create and merge the PR to update full

     

    From your testing of the core release, you already have a branch for updating full to the new version. So commit it and send out a PR.

     

    taozi:wildfly bstansberry$ git diff
    diff --git a/pom.xml b/pom.xml
    index 15d2815..b935bfb 100644
    --- a/pom.xml
    +++ b/pom.xml
    @@ -219,7 +219,7 @@
             <version.org.testng>6.1.1</version.org.testng>
             <version.org.wildfly.build-tools>1.0.0.Alpha6</version.org.wildfly.build-tools>
             <version.org.wildfly.checkstyle-config>1.0.1.Final</version.org.wildfly.checkstyle-config>
    -        <version.org.wildfly.core>1.0.0.Alpha14</version.org.wildfly.core>
    +        <version.org.wildfly.core>1.0.0.Alpha15</version.org.wildfly.core>
             <version.org.wildfly.arquillian>1.0.0.Alpha4</version.org.wildfly.arquillian>
             <version.org.yaml.snakeyaml>1.13</version.org.yaml.snakeyaml>
             <version.sun.jaxb>2.2.7</version.sun.jaxb>
    taozi:wildfly bstansberry$ git commit -a -m "Move to WildFly Core 1.0.0.Alpha15"
    [upcore15 cc0a153] Move to WildFly Core 1.0.0.Alpha15
     1 file changed, 1 insertion(+), 1 deletion(-)
    taozi:wildfly bstansberry$ git push mygithub upcore15
    Counting objects: 23, done.
    Delta compression using up to 8 threads.
    Compressing objects: 100% (3/3), done.
    Writing objects: 100% (3/3), 342 bytes | 0 bytes/s, done.
    Total 3 (delta 2), reused 0 (delta 0)
    To git@github.com:bstansberry/wildfly.git
     * [new branch]      upcore15 -> upcore15
    taozi:wildfly bstansberry$
          

     

    Use the github UI to create the PR.

     

    Once the pull player run against your PR is done, merge the PR.

     

    Relax

     

    Enjoy an adult beverage of your choice.