CCNET Config Conditional Task Execution - cruisecontrol.net

Hi all require help on CCNet Conditional execution.
These are the Triggers I have declared
<intervalTrigger
name="continuous"
seconds="30"
buildCondition="IfModificationExists"
initialSeconds="5"/>
<scheduleTrigger time="23:30" buildCondition="ForceBuild" name="scheduled">
<weekDays>
<weekDay>Monday</weekDay>
</weekDays>
</scheduleTrigger>
</triggers>
Below is the Task I am Having both to be triggered based on Condition
<conditional>
<conditions>
<compareCondition value1="$[buildCondition]"
value2="IfModificationExists" />
</conditions>
<tasks>
<msbuild >
<executable>...\v4.0.30319\MSBuild.exe</executable>
<workingDirectory>...\WcfServiceLibrary1\</workingDirectory>
<projectFile>MSBuild_MasterConfigFile.BUILD</projectFile>
<buildArgs>/target:CCNETBUILD /p:Config=Debug</buildArgs>
<timeout>900</timeout>
</msbuild>
<elseTasks>
<msbuild ><executable>...\v4.0.30319\MSBuild.exe</executable>
<workingDirectory>...\WcfServiceLibrary1\</workingDirectory>
<projectFile>MSBuild_MasterConfigFile.BUILD</projectFile>
<buildArgs>/target:CCNETDeploy /p:Config=Debug</buildArgs>
<timeout>900</timeout>
</msbuild>
</elseTasks>
</conditional>
I am getting unused node detected exception. Please help me asap. Thanks in advance.

It is difficult to tell from your code sample, but did you check that the <Conditionals> node is embedded within a <tasks>...</tasks> node in your project declaration?
In other words:
<project>
<tasks>
<conditional>...</conditional>
</tasks>
</project>
and not
<project>
<conditional>...</conditional>
</project>

Related

CCNet AsseblyInfo update is not working. is there an issue with my config?

Below is my config what i am using even though i force a build by doing a check-in, version number of assemblies are not updated.
probably i am missing some thing.
note: new to build servers and this is my first. we have lot of Assemblyinfo.cs files, under different projects.
do i need to use msbuildtaks to get around this? if so can you help with an example.
<cruisecontrol xmlns:cb="urn:ccnet.config.builder" xmlns="http://thoughtworks.org/ccnet/1/8">
<!-- preprocessor settings -->
<cb:define ArtifactsDir="\Artifacts" />
<cb:define ProductNameCompanySvnPath = "D:\CompanySvn\Trunk\Source\"/>
<cb:define TortoiseSvnExe = "C:\Program Files\TortoiseSVN\bin\svn.exe"/>
<cb:define SvnPathToBuild = "http://dummy.mummy.com/svn/Company/branches/Branch-meau/" />
<cb:define NantExecutablePath = "C:\Program Files\NANT\bin\nant.exe"/>
<cb:define BranchNameCI="_BR_Meau_CI"/>
<cb:define BuildMode = "Release"/>
<cb:define PlatformCpu = "X86"/>
<cb:define MsBuildExecutable = "C:\Windows\Microsoft.NET\Framework64\v3.5\msbuild.exe" />
<cb:define MajorVersionNumber = "4"/>
<cb:define MinorVersionNumber = "1"/>
<cb:define name="svn_ci_ProductName">
<executable>$(TortoiseSvnExe)</executable>
<workingDirectory>$(ProductNameCompanySvnPath)ProductName.Company\</workingDirectory>
<trunkUrl>$(SvnPathToBuild)ProductName.Company/</trunkUrl>
<cleanUp>true</cleanUp>
<autoGetSource>true</autoGetSource>
</cb:define>
<cb:define name="svn_ci_Database">
<executable>$(TortoiseSvnExe)</executable>
<workingDirectory>$(ProductNameCompanySvnPath)Database\</workingDirectory>
<trunkUrl>$(SvnPathToBuild)Database/</trunkUrl>
<cleanUp>true</cleanUp>
<autoGetSource>true</autoGetSource>
</cb:define>
<cb:define name="svn_ci_ThirdParty">
<executable>$(TortoiseSvnExe)</executable>
<workingDirectory>$(ProductNameCompanySvnPath)ThirdParty\</workingDirectory>
<trunkUrl>$(SvnPathToBuild)ThirdParty/</trunkUrl>
<cleanUp>true</cleanUp>
<autoGetSource>true</autoGetSource>
</cb:define>
<cb:define name="svn_ci_Release">
<executable>$(TortoiseSvnExe)</executable>
<workingDirectory>$(ProductNameCompanySvnPath)Release\</workingDirectory>
<trunkUrl>$(SvnPathToBuild)Release/</trunkUrl>
<cleanUp>true</cleanUp>
<autoGetSource>true</autoGetSource>
</cb:define>
<project name="Company_SVN_Build" description="Build Trunk after merge.">
<workingDirectory>$(ProductNameCompanySvnPath)ProductName.Company\</workingDirectory>
<!--<triggers>
check the source control every X time for changes, and run the tasks if changes are found
<intervalTrigger name="continuous" seconds="30" buildCondition="IfModificationExists" initialSeconds="5"/>
</triggers>-->
<triggers>
<intervalTrigger name="continuous" seconds="180" buildCondition="IfModificationExists" initialSeconds="30" />
</triggers>
<labeller type="assemblyVersionLabeller">
<major>$(MajorVersionNumber)</major>
<minor>$(MinorVersionNumber)</minor>
<incrementOnFailure>true</incrementOnFailure>
</labeller>
<!-- get all the souce from the branch required to build the binaries. -->
<sourcecontrol type="multi">
<sourceControls>
<svn>
<cb:svn_ci_ProductName/>
</svn>
<svn>
<cb:svn_ci_Database/>
</svn>
<svn>
<cb:svn_ci_ThirdParty/>
</svn>
<svn>
<cb:svn_ci_Release/>
</svn>
</sourceControls>
</sourcecontrol>
<tasks>
<msbuild>
<executable>$(MsBuildExecutable)</executable>
<projectFile>$(ProductNameCompanySvnPath)ProductName.Company\ProductName.Company.sln</projectFile>
<buildArgs>/p:Configuration=Release /p:Platform=$(PlatformCpu) /v:diag</buildArgs>
<targets>clean</targets>
<timeout>9000</timeout>
<logger>C:\Program Files (x86)\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
</msbuild>
<msbuild>
<executable>$(MsBuildExecutable)</executable>
<projectFile>$(ProductNameCompanySvnPath)ProductName.Company\ProductName.Company.sln</projectFile>
<buildArgs>/p:Configuration=Release /p:Platform=$(PlatformCpu) /v:diag</buildArgs>
<targets>Build</targets>
<timeout>9000</timeout>
<logger>C:\Program Files (x86)\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
</msbuild>
<exec>
<executable>Prepare_ProductName_Release.bat</executable>
<baseDirectory>$(ProductNameCompanySvnPath)Release</baseDirectory>
<buildArgs>all</buildArgs>
<buildTimeoutSeconds>100</buildTimeoutSeconds>
</exec>
</tasks>
<!-- all plublishers are listed below -->
<publishers>
<xmllogger />
<artifactcleanup cleanUpMethod="KeepLastXBuilds" cleanUpValue="50" />
</publishers>
</project>
<!-- End Projects -->
</cruisecontrol>
If I'm reading this correctly:
CC.NET is not going to tag your Assemblyinfo.cs files. You have to do that yourself.
The "Version" in the CC.NET context is the Cardinal/Ordinal number of the build. Your first build will be "1", then "2", etc, etc.
See my AssemblyInfo.cs "tagging" example here:
Use SVN Revision to label build in CCNET
I prefer to tag it with the SVN revision. You may use the CC.NET version.
The way I think of CC.NET is "a big super fancy msbuild caller" "with some post build reporting".

Publish-AzureServiceProject Node.js to Windows Server 2012

I'm trying to publish a Node.js package to Azure using the Powershell "Publish-AzureServiceProject" cmdlet.
With the default osFamily="2" (Windows Server 2008 R2) it works as expected but when I publish using osFamily="3" (Windows Server 2012) I get the following error:
The feature named NetFx35 that is required by the uploaded package is
not available in the OS * chosen for the deployment.
Obviously I'm not using .Net but 3.5 is the default that prevents me to upload the package.
To specify .Net 4.5 I read that I need to create a roleproperties.txt file containing:
TargetFrameWorkVersion=v4.5
and pass it via a /rolePropertiesFile to cspack.
However since I'm not calling cspack myself, how can I pass that option through Publish-AzureServiceProject to cspack? Or is there another workaround?
Currently my ServiceDefinition looks like this:
<?xml version="1.0"?>
<ServiceDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="Foo" upgradeDomainCount="1" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
<WorkerRole name="Bar">
<Imports>
<Import moduleName="RemoteForwarder" />
<Import moduleName="RemoteAccess" />
</Imports>
<Startup>
<Task commandLine="setup_worker.cmd > log.txt" executionContext="elevated">
<Environment>
<Variable name="EMULATED">
<RoleInstanceValue xpath="/RoleEnvironment/Deployment/#emulated" />
</Variable>
<Variable name="RUNTIMEID" value="node" />
<Variable name="RUNTIMEURL" value="http://nodertncu.blob.core.windows.net/node/0.6.20.exe" />
</Environment>
</Task>
</Startup>
<Endpoints>
<InputEndpoint name="HttpIn" protocol="tcp" port="80" />
</Endpoints>
<Runtime>
<Environment>
<Variable name="PORT">
<RoleInstanceValue xpath="/RoleEnvironment/CurrentInstance/Endpoints/Endpoint[#name='HttpIn']/#port" />
</Variable>
<Variable name="EMULATED">
<RoleInstanceValue xpath="/RoleEnvironment/Deployment/#emulated" />
</Variable>
</Environment>
<EntryPoint>
<ProgramEntryPoint commandLine="runnode.cmd" setReadyOnProcessStart="true" />
</EntryPoint>
</Runtime>
</WorkerRole>
</ServiceDefinition>
So currently, there's a bit of work you need to do to get OSFamily=3 working with non-.Net roles. Essentially, you need to run cspack yourself to create a package and specify a roleProperties file that allows you to target .Net 4.5 (yes, even though you're not using .Net at all, you need to convince the cspack tool that you're using .Net 4.5).
Here are the steps:
Go create a new node project with a web role.
Modify the cscfg to set OS Family = 3.
Drop the below roleproperties.txt into the root of the service.
Launch the "Windows Azure Command Prompt" and then go the service root folder.
Run this command: cspack ServiceDefinition.csdef /role:WebRole1;WebRole1 /sites:WebRole1;Web;WebRole1 /rolePropertiesFile:WebRole1;RoleProperties.txt /out:package.cspkg
Log in to the portal and create a service / upload the cspkg manually
The contents of roleproperties.txt:
TargetFrameworkVersion=v4.5
As Node SDK builds the package without using cspack.exe (to keep platform independent architecture) you can not use "/rolePropertiesFile" option.
As workaround, you can setup the targetFrameworkVersion setting using Runtime -> EntryPoint -> NetFxEntryPoint -> targetFrameworkVersion="v4.5" in your ServiceDefinition as below example:
<?xml version="1.0"?>
<ServiceDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="NodeAvkash" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
<WebRole name="WebRole1" vmsize="ExtraSmall">
<Imports />
<Startup>
<Task commandLine="setup_web.cmd > log.txt" executionContext="elevated">
<Environment>
<Variable name="EMULATED">
<RoleInstanceValue xpath="/RoleEnvironment/Deployment/#emulated" />
</Variable>
<Variable name="RUNTIMEID" value="node;iisnode" />
<Variable name="RUNTIMEURL" value="http://nodertncu.blob.core.windows.net/node/0.6.20.exe;http://nodertncu.blob.core.windows.net/iisnode/0.1.21.exe" />
</Environment>
</Task>
</Startup>
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="http" port="80" />
</Endpoints>
<Sites>
<Site name="Web">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" />
</Bindings>
</Site>
</Sites>
<Runtime executionContext="elevated">
<EntryPoint>
<NetFxEntryPoint assemblyName="WebRole1.dll" targetFrameworkVersion="v4.5" />
</EntryPoint>
</Runtime>
</WebRole>
</ServiceDefinition>

Stop windows service before CruiseControl.NET get latest

I'm trying to figure out how to run a bat file that stops a windows service before the CruiseControl.NET project gets latest, as it'll fail saying the files are in use (by the running windows service.) I can't figure out how to run a task before it gets latest, as the source control block isn't a task, it's directly under the project node.
<project name="projectname" queue="queuename" queuePriority="1">
<workingDirectory>C:\Build</workingDirectory>
<category>companyname</category>
<webURL>http://ip/ccnet/server/local/project/projectname/ViewProjectReport.aspx</webURL>
<triggers>
<intervalTrigger seconds="60" />
</triggers>
<modificationDelaySeconds>60</modificationDelaySeconds>
&sc;
<tasks>
<msbuild>
<executable>C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable>
<workingDirectory>C:\Build\Web\H4</workingDirectory>
<projectFile>solution.sln</projectFile>
<buildArgs>/v:quiet /noconlog /p:Configuration=Debug</buildArgs>
<targets>Build</targets>
<timeout>900</timeout>
<logger>C:\Program Files\CruiseControl.NET\server\Rodemeyer.MsBuildToCCnet.dll</logger>
</msbuild>
<exec>
<executable>deleteTestResults.bat</executable>
<baseDirectory>C:\Build\Test\TestCases\H4Test</baseDirectory>
<buildArgs></buildArgs>
<buildTimeoutSeconds>30</buildTimeoutSeconds>
</exec>
<exec>
<executable>C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\mstest.exe</executable>
<baseDirectory>C:\Build\Test\TestCases\</baseDirectory>
<buildArgs>/testcontainer:testproject\bin\debug\testproject.dll /runconfig:localtestrun.Testrunconfig /resultsfile:H4Test\testResults.trx</buildArgs>
<buildTimeoutSeconds>900</buildTimeoutSeconds>
</exec>
</tasks>
<publishers>
<merge>
<files>
<file>C:\Build\Test\TestCases\testproject\testResults.trx</file>
</files>
</merge>
<xmllogger logDir="C:\Program Files\CruiseControl.NET\Logs\companyname\projectname\" />
</publishers>
</project>
Any help would be greatly appreciated, thanks,
Justin
Can't you just add a new exec before the msbuild task:
i.e.
<tasks>
<exec>
<executable>StopMyServices.bat</executable>
<baseDirectory>C:\Build\Test\TestCases\H4Test</baseDirectory>
<buildArgs></buildArgs>
<buildTimeoutSeconds>30</buildTimeoutSeconds>
</exec>
<msbuild>
<executable>C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable>
<workingDirectory>C:\Build\Web\H4</workingDirectory>
<projectFile>solution.sln</projectFile>
<buildArgs>/v:quiet /noconlog /p:Configuration=Debug</buildArgs>
<targets>Build</targets>
<timeout>900</timeout>
<logger>C:\Program Files\CruiseControl.NET\server\Rodemeyer.MsBuildToCCnet.dll</logger>
</msbuild>
<exec>
<executable>deleteTestResults.bat</executable>
<baseDirectory>C:\Build\Test\TestCases\H4Test</baseDirectory>
<buildArgs></buildArgs>
<buildTimeoutSeconds>30</buildTimeoutSeconds>
</exec>
<exec>
<executable>C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\mstest.exe</executable>
<baseDirectory>C:\Build\Test\TestCases\</baseDirectory>
<buildArgs>/testcontainer:testproject\bin\debug\testproject.dll /runconfig:localtestrun.Testrunconfig /resultsfile:H4Test\testResults.trx</buildArgs>
<buildTimeoutSeconds>900</buildTimeoutSeconds>
</exec>
</tasks>

issues in cc.net (cruisecontrol.net) with uppercut

I have installed uppercut integrated cc.net such a way that i didnt make any change in webdashboard,
This is my cc.net config code,
-->
-->
<!-- PROJECT STRUCTURE -->
<cb:define name="WindowsFormsApplication1">
<project name="$(projectName)">
<workingDirectory>$(working_directory)\$(projectName)</workingDirectory>
<artifactDirectory>$(drop_directory)\$(projectName)</artifactDirectory>
<category>$(projectName)</category>
<queuePriority>$(queuePriority)</queuePriority>
<triggers>
<intervalTrigger name="continuous" seconds="60" buildCondition="IfModificationExists" />
</triggers>
<sourcecontrol type="svn">
<executable>c:\program files\subversion\bin\svn.exe</executable>
<!--<trunkUrl>http://192.168.1.8/trainingrepos/deepasundari/WindowsFormsApplication1</trunkUrl>-->
<trunkUrl>$(svnPath)</trunkUrl>
<workingDirectory>$(working_directory)\$(projectName)</workingDirectory>
</sourcecontrol>
<tasks>
<msbuild>
<executable>C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable>
<workingDirectory>$(working_directory)\$(projectName)</workingDirectory>
<projectFile>WindowsFormsApplication1.sln</projectFile>
<timeout>600</timeout>
<buildArgs> /noconsolelogger /p:configuration=Debug </buildArgs>
<!--<buildArgs>/noconsolelogger /p:OutputPath=$(drop_directory)\$(projectName)\sample </buildArgs>-->
<logger>ThoughtWorks.CruiseControl.MsBuild.XmlLogger,C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
</msbuild>
<!--<labeller type="svnRevisionLabeller">
<prefix>Test-</prefix>
<major>7</major>
<minor>11</minor>
<url>$svnpath</url>
<username>deepasundari</username>
<password>deepasundari</password>
</labeller>-->
<exec>
<executable>$(working_directory)\$(projectName)\build.bat</executable>
</exec>
</tasks>
<publishers>
<!--<buildpublisher>
--><!--<sourceDir>C:\myprojects\project1</sourceDir>--><!--
<publishDir>$(working_directory)\$(projectName)</publishDir>
</buildpublisher>-->
<merge>
<files>
<file>$(working_directory)\$(projectName)\build_output\build_artifacts\*.xml</file>
<file>$(working_directory)\$(projectName)\build_output\build_artifacts\mbunit\*-results.xml</file>
<file>$(working_directory)\$(projectName)\build_output\build_artifacts\nunit\*-results.xml</file>
<file>$(working_directory)\$(projectName)\build_output\build_artifacts\ncover\*-results.xml</file>
<file>$(working_directory)\$(projectName)\build_output\build_artifacts\ndepend\*.xml</file>
</files>
</merge>
<!--<email from="buildserver#somewhere.com" mailhost="smtp.somewhere.com" includeDetails="TRUE">
<users>
<user name="YOUR NAME" group="BuildNotice" address="yourEmail#somewhere.com" />
</users>
<groups>
<group name="BuildNotice" notification="change" />
</groups>
</email>-->
<xmllogger/>
<statistics>
<statisticList>
<firstMatch name="Svn Revision" xpath="//modifications/modification/changeNumber" />
<firstMatch name="ILInstructions" xpath="//ApplicationMetrics/#NILInstruction" />
<firstMatch name="LinesOfCode" xpath="//ApplicationMetrics/#NbLinesOfCode" />
<firstMatch name="LinesOfComment" xpath="//ApplicationMetrics/#NbLinesOfComment" />
</statisticList>
</statistics>
<modificationHistory onlyLogWhenChangesFound="true" />
<rss/>
</publishers>
</project>
</cb:define>
<cb:WindowsFormsApplication1 projectname="WindowsFormsApplication1" queuepriority="1" svnpath="http://192.168.1.8/trainingrepos/deepasundari/WindowsFormsApplication1" />
this code is updating rss and report xml files, but i could not get the build folder in the code_drop..
could anyone help me with this problem??
It looks like you have followed the sample almost perfectly. http://uppercut.googlecode.com/svn/trunk/docs/Samples/CC.NET/server/ccnet.config
What you should see in the code_drop folder on the build server is a folder b##-r## for build and revision per each build.
Most of this is talked about in here: http://uppercut.googlecode.com/svn/trunk/docs/IntegrateUppercuTWithCruiseControl.NET.doc

CCNet 1.6 Conditional Plugin Help Needed!

I cannot get the conditional plugin to work that has been added to CCNet as of version 1.6 - clicky. I am running the latest version of CCNet (1.6.7258.1) and have the following code in my ccnet.config:
<project name="9iCompile">
<sourcecontrol type="svn">
<trunkUrl>http://bis-build:81/svn/Oracle/oas_forms/COPEN</trunkUrl>
<workingDirectory>C:\OAS\COPEN</workingDirectory>
<username>*</username>
<password>*</password>
<executable>C:\Program Files\VisualSVN\bin\svn.exe</executable>
</sourcecontrol>
<conditional>
<conditions>
<compareCondition>
<value1>$[ProjectType]</value1>
<value2>copen</value2>
<evaluation>equal</evaluation>
<ignoreCase>true</ignoreCase>
</compareCondition>
</conditions>
<tasks>
<nant>
<executable>C:\Program Files\nant-0.85\bin\nant.exe</executable>
<baseDirectory>C:\OAS</baseDirectory>
<buildFile>Oracle9i_Automation_v2.build</buildFile>
<targetList>
<target>build</target>
</targetList>
</nant>
</tasks>
</conditional>
<!-- more conditional statements would be here for different project types if I can get it to work -->
<parameters>
<selectParameter name="ProjectType">
<description>The type of project to operate on.</description>
<allowedValues>
<value name="COPEN">copen</value>
<value name="BCS">bcs</value>
<value name="FCDD">fcdd</value>
</allowedValues>
</selectParameter>
</parameters>
<security type="defaultProjectSecurity" defaultRight="Deny">
<permissions>
<rolePermission name="Developers" ref="Developers"/>
<rolePermission name="Accepters" ref="Accepters"/>
<rolePermission name="Releasers" ref="Releasers"/>
<rolePermission name="Administrators" ref="Administrators"/>
</permissions>
</security>
</project>
The CCNet server crashes whenever I try to run this config though with
the following output:
[14:ERROR] Exception: Unused node detected:
<conditional>
<conditions>
<compareCondition>
<value1>$[ProjectType]</value1>
<value2>copen</value2>
<evaluation>equal</evaluation>
<ignoreCase>true</ignoreCase>
</compareCondition>
</conditions>
<tasks>
<nant>
<executable>C:\Program Files\nant-0.85\bin\nant.exe</executable>
<baseDirectory>C:\OAS</baseDirectory>
<buildFile>Oracle9i_Automation_v2.build</buildFile>
<targetList>
<target>build</target>
</targetList>
</nant>
</tasks>
</conditional>
----------
ThoughtWorks.CruiseControl.Core.Config.ConfigurationException: Unused
node detected:
<conditional>
<conditions>
<compareCondition>
<value1>$[ProjectType]</value1>
<value2>copen</value2>
<evaluation>equal</evaluation>
<ignoreCase>true</ignoreCase>
</compareCondition>
</conditions>
<tasks>
<nant>
<executable>C:\Program Files\nant-0.85\bin\nant.exe</executable>
<baseDirectory>C:\OAS</baseDirectory>
<buildFile>Oracle9i_Automation_v2.build</buildFile>
<targetList>
<target>build</target>
</targetList>
</nant>
</tasks>
</conditional>
at ThoughtWorks.CruiseControl.Core.Config.NetReflectorConfigurationReader.Defa­ultErrorProcesser.ProcessError(String message)
at ThoughtWorks.CruiseControl.Core.Config.NetReflectorConfigurationReader.<>c_­_DisplayClass1.<Read>b__0(InvalidNodeEventArgs args)
at Exortech.NetReflector.InvalidNodeEventHandler.Invoke(InvalidNodeEventArgsar­gs)
at Exortech.NetReflector.NetReflectorTypeTable.OnInvalidNode(InvalidNodeEventA­rgs args)
at Exortech.NetReflector.XmlTypeSerialiser.HandleUnusedNode(NetReflectorTypeTa­ble table, XmlNode orphan)
at Exortech.NetReflector.XmlTypeSerialiser.ReadMembers(XmlNode node, Object instance, NetReflectorTypeTable table)
at Exortech.NetReflector.XmlTypeSerialiser.Read(XmlNode node, NetReflectorTypeTable table)
at Exortech.NetReflector.NetReflectorReader.Read(XmlNode node)
at ThoughtWorks.CruiseControl.Core.Config.NetReflectorConfigurationReader.Read­(XmlDocument document, IConfigurationErrorProcesser errorProcesser)
at ThoughtWorks.CruiseControl.Core.Config.DefaultConfigurationFileLoader.Load(­FileInfo configFile)
at ThoughtWorks.CruiseControl.Core.Config.FileConfigurationService.Load()
at ThoughtWorks.CruiseControl.Core.Config.FileWatcherConfigurationService.Load­()
at ThoughtWorks.CruiseControl.Core.Config.CachingConfigurationService.Load()
at ThoughtWorks.CruiseControl.Core.CruiseServer.Restart()
at ThoughtWorks.CruiseControl.Core.Config.ConfigurationUpdateHandler.Invoke()
at ThoughtWorks.CruiseControl.Core.Config.FileWatcherConfigurationService.Hand­leConfigurationFileChanged(Object source, FileSystemEventArgs args)
----------
Can someone please help?? I have no idea what I'm doing wrong here or
if this is a bug :( I have also posted on the ccnet-user group several days ago but have not received any response :(
I have received a response from the ccnet-user group now. The conditional block is in fact a task type so needs to be in a tasks or publishers element.

Resources