Monday, July 18, 2011

CC.NET - NAnt integration problem

Today I was working on migration of our continuous integration system from old test server to a new one. A year ago the system was built upon:
1. CruiseControl.NET-1.5.7256.1
2. NAnt 0.90
3. Silk SVN 1.5.2
4. Windows 2003 x86

Today I downloaded and installed the latest versions of CC.NET (CruiseControl.NET-1.6.7981.1) and tried to set everything up and running on Windows 2008 R2 x64.

After I've finally made CC.NET dashboard working: it needs integrated mode for the app pool and updated Handler mappings for the application (by default I received all of them disabled) using 'Edit Feature Permissions -> Read, Script, Execute' option on the corresponding page - I've forced build and received the following message in the build log:
...
<LastModificationDate>17.07.2011 14:34:52</LastModificationDate>
</integrationProperties>
<build date="2011-07-18 14:34:45" buildtime="00:00:07" error="true"
buildcondition="ForceBuild">NAnt 0.90 (Build 0.90.3780.0; release; 08.05.2010)
Copyright (C) 2001-2010 Gerry Shaw
http://nant.sourceforge.net

Try 'nant -help' for more information

Duplicate value '
' for command-line argument '-target'.

</build>
</cruisecontrol>

By the way, NAnt was executed in the following way:

<nant>
<executable>$(nant.executable)</executable>
<buildFile>$(nant_build_file).build</buildFile>
<buildArgs>
-D:svn.exe="$(svn.executable)"
-D:svn.base.path="$(svn_base_path)"
-D:svn.path="$(svn_base_path)$(svn_project_path)"
-D:result.file.postfix="$(output_file_postfix)"
-D:output.dir="$(project_output_dir)"
-D:publish.dir="$(project_publish_dir)"
-D:MSBuild-2.0="$(msbuild_2.0.executable)"
-D:MSBuild-3.5="$(msbuild_3.5.executable)"
-D:MSBuild-4.0="$(msbuild_4.0.executable)"
$(nant_parameters)
</buildArgs>
<buildTimeoutSeconds>$(nant_time_out)</buildTimeoutSeconds>
</nant>

Playing with CC.NET config files, NAnt build script and googling for around 2 hours didn't end up with any result.

Finally I stopped CC.NET service, opened the installation directory and replaced all the contents with the files of CruiseControl.NET-1.5.7256.1 from old machine. No CC.NET configs or build files where changed after, I started the service and forced build via dashboard. NAnt execution went fine, a build was successfully published.

To summarize, seems like the latest CC.NET version has some integration issue with NAnt or there's some change to CC.NET command which is not reflcted in the on-line documentation.