The last three days I’ve spent my time fighting with our release-build which is one of my tasks at work. We are using Maven 2 as build tool, IBM Rational ClearCase UCM as software configuration tool and Continuum v1.1 as build server. Although Maven offers the possibility to automatically release your project, we had problems with the UCM-version to integrate it in our release-build. So we decided to develop a very large batch-script which contains all necessary tasks to build a clean new release of our business modules and framework applications.
Because the batch-script is not very readable I tried to visualize the build-process within MS Visio 2007 so that other developers are not afraid of getting in touch with this script-file. I have separated the file into five parts which are identified by different colors.
Green represents the phase where a complete rebase (ClearCase terminology for an update) and build happens. This is necessary to be sure that the actual project-version contains no errors before you release a new version of your module.
The next phase (blue) contains all changes such as version-upgrades in the configuration-files (e.g. pom.xml: 1.0-SNAPSHOT => 1.0 => 1.5-SNAPSHOT). In this phase the script checks out (CC-terminology) the config-file and opens it with an editor (notepad++) but sometimes (I can’t explain why) the editor doesn’t open the right config-file so I have to search for it manually.
After you have changed the version the next phase (orange) starts. This phase tests and builds the complete business- or framework-module with all new version changes. If there are no errors then this phase also delivers (CC-terminology for upgrading the source on the scm-repository) the project so that all developers will be able to check the changes but only in a version-tree which is a ClearCase feature.
After the next phase you will also be able to use the new version also in one of your maven-dependencies in other modules.This phase (purple) deploys the project to our Maven-Proxy and generates and deploys all corresponding Maven-reports.
The final phase (red) builds a baseline and recommends it (all CC-terminologies) which means that from this point of time all developers will be able to rebase the project and receive the newest version (in my example this would be 1.5-SNAPSHOT).
Because a complete Release-Build of our framework takes about seven to eight hours and you always have to check if there were some errors, it would be a very nice idea to visualize the batch with a little java/javafx application which has a state-component (e.g. a special color) that shows the actual phase or part of a phase in which the Release-Build at that point of time is.
But I think I have to develop this application in my free time because the actual batch-script works fine and why should I get paid for spending time on implementing a new tool if the current tool works. Maybe I can convince my team-leader by showing him how cool javafx is and how great it would be to use this technology for the Release-Build (because my team-leader (I won’t mention any names) is also a technology-geek).
So, please tell me something about your Release-Build and what your procedure is. Have a nice evening.