we are using the maven-release-plugin for releasing our artifacts. The release plugin is quite nice since it handles the complete release process:
- updating poms to release version
- tagging source in SVN
- updating poms to next development version
- checking out sources from release tag in SVN
- clean install deploy sources from release tag to maven repository
However, I am not quite sure how to best use it in combination with Bamboo. Ideally I'd like Bamboo to create the releases, but it seems to me that a release is not a first-class citizen in Bamboo (it is all just builds).
So I have created a build plan for my maven project foo, it is called foo-build. In the build plan I specify the goals clean deploy. This is fine and will deploy SNAPSHOT versions of foo to our maven snapshot repo.
For creating a release of foo I have created another build plan named foo-release. It is basically a clone of foo-build but with a different set of goals:
This works as expected, but is not optimal, because:
- for each release I need to change the foo-release build plan (update -DreleaseVersion and -DdevelopmentVersion
- they are two different build plans, but I would rather consider them two variations of the same build (snapshot build and release build)
- it is error prone: if I accidentially hit the build button before changing the release version I might end up overwriting an existing release
In my ideal world a release would be a first-class citizen in Bamboo:
- In Builder Configuration I would define the goals for the standard (snapshot) build
- optionally I could define a different set of goals for a release build within the same build plan
- for sure, releases would correlate with the versions defined in JIRA
- given the appropriate rights, I would see a "Create Release" button next to the build plan
- clicking on it takes me to another screen where I have input fields for entering the release version (could be a dropdown box with the versions defined in JIRA) and next development version
- for sure, Bamboo would make sure that a release of that artifact with the given version does not yet exist
- if input is okay, Bamboo starts the release build and creates a "release build results" page
As I go on writing this, I firmly believe that something like this MUST already exist! Does it?!?
Releases seem to be first class citizens in JIRA already, so leveraging this and adding the connection to Bamboo would be really a great benefit IMHO.