Cruisecontrol发布命令onfailure

时间:2010-12-20 08:59:13

标签: cruisecontrol.net conditional publisher

发布我当前的项目状态时遇到了问题。

映射:

<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&gt; logs / status.txt”

有人知道那条消息的含义吗?

感谢您的期待

亚历

2 个答案:

答案 0 :(得分:5)

您使用的是CruiseControl还是CruiseControl.NET?

如果是CC.NET,则“onfailure”节点不存在。相反,你应该像这样使用Conditionnal Publisher [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

答案 1 :(得分:0)

documentation看,<executable>必须是可执行文件的名称,并且参数必须在<buildArgs>中传递。所以这样的事情可能会成功。

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