Here is one sample build recipe, with comments below.
<build description="Building System"
xmlns:svn="http://bitten.edgewall.org/tools/svn"
xmlns:sh="http://bitten.edgewall.org/tools/sh"
xmlns:python="http://bitten.edgewall.org/tools/python"
xmlns:x="http://bitten.edgewall.org/tools/xml">
<step id="Checkout">
<sh:exec file="echo" args="Checkout start"/>
<svn:checkout url="file:///C:/Trac/Repo/project" path="" revision="${revision}"/>
<sh:exec file="echo" args="Checkout complete"/>
</step>
<step id="Build">
<sh:exec file="echo" args="Build start"/>
<sh:exec file="msbuild.exe" args="project.sln @C:\\Builds\\utils\\logger\\msbuild.rsp"/>
<x:transform src="msbuild-output.xml" dest="msbuild-result.xml" stylesheet="..\\utils\\logger\\msbuild.xsl" />
<sh:exec file="type" args="msbuild-result.xml"/>
<sh:exec file="echo" args="Build complete"/>
</step>
<step id="Smoke Test">
<sh:exec file="echo" args="Test start"/>
<python:exec file="C:\Python25\Scripts\qmtest.py"
args="-DC:\\Builds\\tdb report -o..\\PreDist\\results.xml c:\\Builds\\PreDist\\results.qmr"/>
<x:transform src="C:\\Builds\\PreDist\\results.xml" dest="test-results.xml" stylesheet="C:\\Builds\\Utils\\logger\\qmtest.xsl" />
<report category="test" file="test-results.xml" />
<sh:exec file="echo" args="Test complete"/>
</step>
<step id="doxygen" description="Generate Documentation">
<sh:exec executable="doxygen" args=".doxyfile" />
</step>
<step id="rsync" description="Update Trac Doxygen">
<sh:exec executable="rsync" args="-rvz --delete doxygen_output/ user@trac-server:doxygen_output" />
</step>
<step id="Package">
<sh:exec file="echo" args="Predist start"/>
<sh:exec file="C:\Program Files\NSIS\makensis" args="c:\\Builds\\project.nsi"/>
<sh:exec file="echo" args="Predist complete"/>
</step>
</build>
Comments:
- Checkout: Checks out the latest source into the build directory.
- Build: Uses MSBUILD to build the project, using a custom logger (see here) and an .xsl file to make the output from the logger useful (based on the msbuild2ccnet.xsl file mentioned on the link)
- Smoke Test: Uses qmtest to run a database of tests, and report the results via bitten. The tests themselves are AutoIt scripts.
- Doxygen: Doxygen documentation can be built using Bitten. Then the server hosting Trac and using the Doxygen plugin is updated using rsync.
- Package: Finally, if all the above succeeds, use NSIS to create an install package that can be deployed on the target system.
Last modified 15 years ago
Last modified on Jul 31, 2010, 2:40:05 PM
