【问题标题】:CruiseControl.NET check output for success messagesCruiseControl.NET 检查成功消息的输出
【发布时间】:2010-11-02 20:50:03
【问题描述】:

我们有一个非常大的遗留系统,它是使用复杂的批处理文件构建的。我们的 CruiseControl.NET 服务器只需调用批处理文件并检查返回代码,它工作正常并生成成功的构建。

但是,有时批处理文件在构建成功后似乎没有正确返回,CruiseControl.NET 只是遇到超时并报告构建失败。

有什么方法可以让 CruiseControl.NET 检查批处理文件的输出中是否存在指示构建成功的字符串,并正确报告构建状态?

(当我有一两天空闲时,我想使用 NAnt 或其他东西重写构建脚本,但由于它非常复杂,因此没有得到高优先级,而且它目前正在工作)

编辑:这是 ccnet.config 中的条目

  <project name="MyProject" queue="Q1" queuePriority="1">
    <workingDirectory>D:\MyProject</workingDirectory>    
    <triggers />
    <tasks>
      <exec>
        <executable>buildexe.bat</executable>
        <baseDirectory>D:\MyProject</baseDirectory>
        <buildArgs>V12.8 MyProject</buildArgs>
        <buildTimeoutSeconds>6000</buildTimeoutSeconds>
        <successExitCodes>0</successExitCodes>
      </exec>
    </tasks>
    <publishers>
      <xmllogger logDir="D:\MyProject\logs\V12.8" />    
    </publishers>    
  </project>

【问题讨论】:

    标签: cruisecontrol.net


    【解决方案1】:

    您是否尝试过明确设置成功退出代码?

    http://confluence.public.thoughtworks.org/display/CCNET/Executable+Task

    【讨论】:

    • 是的,我有&lt;successExitCodes&gt;0&lt;/successExitCodes&gt;,如果成功,批处理文件应该将返回码设置为 0,如果失败则设置为 1+。有时它似乎永远不会完成,尽管批处理文件到达它的日志末尾,如果你手动运行它似乎总是完成。
    • 阿夫。您能否使用 xmllogger 找到构建批处理的最后执行任务?
    • 记录器似乎确实包含了批处理文件的所有输出 - 如果您从控制台运行它,则一直到它成功返回的位置。
    • 我的想法已经不多了。我假设您的脚本运行时间不超过 100 分钟,如果成功则返回 0(退出 0 或退出 %ERRORLEVEL%)?您是否检查了启动批处理脚本的代码行(由 cc.net 计算)(可以在 ccnet 日志中看到)?
    • 脚本在大约 25 分钟后输出它的最后一行。它通常返回 0,但即使它以 1 的错误级别退出,我也希望 Cruisecontrol 在该点之后恢复。也许我在这里失败后付出了太多努力 - 是时候咬紧牙关并用 nant 重写了。
    猜你喜欢
    • 1970-01-01
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    相关资源
    最近更新 更多