I want some "Maven with Mercurial release" knowledgeable opinion.
I already saw this thread and a few others.
We want to be agile and fast. We want to build once. Not one build for testing and one for release.
We have setup a continuous release process where we do the following:
- Jenkins checks for SCM changes on "server" repository (every 30 minutes). Also can be triggered manually
- Jenkins clones "server" repository
- Jenkins increments version in pom (example: 1.0.1 -> 1.0.2). NO Snapshots
- Start build, package, automatic deployments and tests
- If all is good, commit changed pom, tag and push back to "server" repository (merge if needed)
- Release good version to a "releases" system, where it's available for QA for further testing
- Developers will pull back changes from "server" repository and get new versiond poms
If a hot fix is needed for a good release
- A developer will clone the relevant tag from "server" repository
- Do the fix, push back to a "server+fix" repository
- Jenkins will build as before
- If good, the fix will also be pushed to the main "server" repository
We found this process to be very quick and clean.
I want your opinion on the flow, with ideas to improve. Remember - Fast, Continuous and Build once.
Thanks in advance!