2

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

映射:

<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”

有谁知道那条消息是什么意思?

感谢期待

亚历克斯

4

2 回答 2

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>

您可能还需要将 echo 任务封装在 cmd 调用中:

<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

于 2010-12-20T09:23:02.403 回答
0

文档看来,它<executable>必须是可执行文件的名称,并且必须传入参数<buildArgs>。所以这样的事情可能会奏效。

<exec>
  <executable>echo</executable>
  <buildArgs>ERROR > logs/status.txt</buildArgs>
</exec>
于 2010-12-20T09:23:02.847 回答