Nuxeo EP (CS, CAP, DM) + Addons
First check the source code is releasable:
- IT-nuxeo-master-build performs date-based releases.
- IT-nuxeo-master-build-* jobs are building various packages (Debian, Windows, Multi-OS, ...).
- IT-nuxeo-master-tests-* jobs and a few others (bench, mass-import, ...) are testing the date-based release in various conditions and environments.
For a date-based release, follow the same steps as below with IT-nuxeo-master-build instead of IT-release-on-demand-build.
Release:
- Temporarily deactivate IT-nuxeo-master-build if starting the release by night to avoid collisions between both CI chains.
- Run IT-release-on-demand-buildand fill parameters (see descriptions for more details):
- BRANCH, TAG, NEXT_SNAPSHOT, MAINTENANCE, FINAL, FFVERSION.
- Check results of IT-release-on-demand-tests-cap-tomcat and IT-release-on-demand-tests-dm-tomcat
- Check results of IT-nuxeo-master-tests-* jobs
- Run batch tasksfor finishing the release:
- Run Check prepared changesets task and carefully look at prepared changesets (everything looks fine?, is there a missing changeset?, is there any conflict?, ...).
- Run Perform (push sources and deploy artifacts) task to achieve publication and upload.
- Run nuxeo-packaging-ondemand to generate the EXE and Debian installers and the Virtual Machine package.
Everything is uploaded into http://community.nuxeo.com/static/staging/ (or customized UPLOAD_URL parameter of IT-release-on-demand-tests-dm-tomcat). Run ~/fix_zip.sh jboss.zip tomcat.zip which will fix the executable zip and generate MD5 checksums. Test the archives. If they are fine, move them out of the stagging repository.
All addons listed in https://github.com/nuxeo/addons/blob/master/pom.xml are released at the same time.
Release other addons
All other addons than those listed in https://github.com/nuxeo/addons/blob/master/pom.xml are automatically released using IT-release-on-demand-addon.
Check for the wanted addon status in its dedicated job(s) on Jenkins (Build, Unit tests, Functional tests).
Mercurial branching model
Release (let's say releasing 1.0.1 from 1.0.1-SNAPSHOT on "1.0" development branch — may be called "master" or "development" — from a Mercurial repository):
- Prepare release (create maintenance branch 1.0.1 from 1.0, change version)
- hg up 1.0
- hg branch 1.0.1
- Replace 1.0.1-SNAPSHOT with 1.0.1
- Commit, tag, build and deploy, push
- hg ci -m"prepare release 1.0.1"
- hg tag release-1.0.1
- mvn clean deploy -Prelease,-qa
- Close branch (aka "null-merge", if relevant)
- hg up null-merge ; hg merge -f -y 1.0.1 ; hg revert -a -r null-merge -X .hgtags ; hg ci -m"null-merge 1.0.1"
- Post release (change version)
- hg up 1.0
- Replace 1.0.1-SNAPSHOT with 1.0.2-SNAPSHOT
- hg ci -m"post release 1.0.1"
- hg push
Git branching model
Draft waiting for being finalized and automated with nx-builder.
unstable (development) branch: master
stable (releases) branch: stable
release 5.4.0 from branch master (5.4.0-SNAPSHOT):
- checkout master
- checkout -b 5.4.0 (version 5.4.0-SNAPSHOT)
- [checkout -b release-5.4.0]
- pom => 5.4.0
- tag release-5.4.0
- [checkout 5.4.0]
- [merge --no-ff on branch 5.4.0 (one release commit)]
- [delete release-5.4.0 branch]
- [checkout stable]
- [merge on stable if latest version]
- checkout master
- pom => 5.4.0.1-SNAPSHOT
release 5.4.0.1 from branch 5.4.0 (5.4.0.1-SNAPSHOT):
- checkout 5.4.0
- checkout -b 5.4.0.1 (version 5.4.0.1-SNAPSHOT)
- [checkout -b release-5.4.0.1]
- pom => 5.4.0.1
- tag release-5.4.0.1
- [checkout 5.4.0.1]
- [merge --no-ff on branch 5.4.0 (one release commit)]
- [delete release-5.4.0.1 branch]
- [checkout stable]
- [merge on stable if latest version]
- checkout 5.4.0
- pom => 5.4.0.2-SNAPSHOT
maintenance 5.4.0.x:
- bugfixes on branch fix-NXP-XYZ
- merge on 5.4.0
- merge on master
- delete fix-NXP-XYZ branch
new features:
- checkout -b feature-NXP-XYZ
- merge on master
- delete feature-NXP-XYZ branch
deleted branches when merging: release-, fix-, feature-*
kept branches: master, stable, x.y.z
tags are created on x.y.z
tags are merged on stable (if latest stable release)
features and fix are merged (at least) on master