2010-12-20 61 views
2

我有一个问题发布我当前的项目状态。Cruisecontrol发布命令onfailure

映射:

<publishers> 
    <xmllogger /><!-- Log For WebDashboard ##Do not remove##-->  
    <email> 
    ... 
    </email> 
    <onfailure> 
    <exec> 
     <executable>echo ERROR > logs/status.txt</executable> 
    </exec> 
    </onfailure>    
</publishers> 

当我想开始我的服务,我得到以下信息:

ThoughtWorks.CruiseControl.Core.Config.ConfigurationException: 无法从配置文件实例CruiseControl的项目。 配置文档很可能缺少正确填充CruiseControl配置所需的Xml节点。 无法加载数组项'onfailure' - 无法从类型System.String转换为ThoughtWorks.CruiseControl.Core.ITask对象的值为:“echo ERROR> logs/status.txt”

有谁知道那条消息是什么手段?

感谢预期

亚历

回答

5

您正在使用的CruiseControl或CruiseControl.NET?

如果CC.NET,那么“onfailure”节点不存在。相反,你应该使用Conditionnal出版商[1]是这样的:

<conditionalPublisher> 
    <conditions> 
     <condition>Failure</condition> 
    </conditions> 
    <publishers> 
     <exec> 
      <executable>echo ERROR > logs/status.txt</executable> 
     </exec> 
    </publishers> 
</conditionalPublisher> 

您可能还需要封装你回声任务在CMD invokation:

<exec> 
    <executable>cmd.exe</executable> 
    <buildArgs>/c "echo ERROR > logs\status.txt"</buildArgs> 
</exec> 

[1] http://ccnetlive.thoughtworks.com/ccnet/doc/CCNET/Conditional%20Publisher.html

+0

感谢您的回复,我已经试过您的解决方案,现在我得到的错误消息: ThoughtWorks.CruiseControl.Core.Config.ConfigurationException:检测未使用的节点:失败 呼应ERROR >日志/ status.txt中 我使用的版本1.5.7256.1 – 2010-12-20 09:34:59

+0

当然,它的作品,我很抱歉,我没有知道这是出版商的一个子节点,v感谢您的供应。 (: – 2010-12-20 09:46:28

0

documentation开始,看起来<executable>必须是可执行文件的名称,参数必须在<buildArgs>中传递。所以像这样的事情可能会诀窍。

<exec> 
    <executable>echo</executable> 
    <buildArgs>ERROR > logs/status.txt</buildArgs> 
</exec> 
+0

感谢您的回复,这没有解决我的问题,相同的消息:/ – 2010-12-20 09:29:35

+0

关于下面的答案,它的工作,谢谢。(: – 2010-12-20 09:47:17