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 ..." to update what will be committed) (use "git checkout -- ..." 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 -Drelease -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 ..." to update what will be committed) (use "git checkout -- ..." 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 clean + deploy; again we use the jboss-release and release profiles. I don't run the testsuite again. I clean to guard against unwanted content from the previous build (e.g. test fixture output) ending up in the distribution modules.
taozi:wildfly-core bstansberry$ mvn clean deploy -Pjboss-release -Drelease -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 ..." to update what will be committed) (use "git checkout -- ..." 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.
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 @@ 6.1.1 1.0.0.Alpha6 1.0.1.Final - 1.0.0.Alpha14 + 1.0.0.Alpha15 1.0.0.Alpha4 1.13 2.2.7 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.
Comments