Below are two examples of how we have accomplished this.
Maven 1 and cruisecontrol and cvs:
We wrote a custom jelly goal that called ant's cvs task.
<goal name="nct:createcertifiedtag">
<ant:cvs command="tag certified-build-${label}" />
</goal>
Notice the
"label"
property. Cruisecontrol provides maven that property to use at runtime with the value set to the build number.
We use this custom goal at the end of the cruisecontrol project's maven goal element:
<maven projectfile="${PROJECT_ROOT}/project.xml" goal=clean install nct:certifiedtag" />
Maven 2 and hudson and subversion:
In the maven pom.xml (or the parent pom.xml), specify the all the source control details so things become easier later. For example, our build includes:
<scm>
<connection>scm:svn:https://svnhost/svn/sto/trunk</connection>
<developerConnection>scm:svn:https://svnhost/svn/sto/trunk</developerConnection>
<url>https://svnhost/svn/sto/trunk</url>
</scm>
Hudson provides maven a
"hudson.build.number"
property to use at runtime populated with the build number. We use it by referencing that on the Goals line in the Hudson job configuration. Additionally, we made an improve over using an external process call to 'svn' by using the maven 2 SCM plugin.clean install scm:tag -Dtag=certified-build-${hudson.build.number}
[update:
${hudson.build.number}
seems to be buggy. I have successfully used ${BUILD_NUMBER}
in its place]
No comments:
Post a Comment