【问题标题】:How to make CC.NET continue build after failed task?任务失败后如何让 CC.NET 继续构建?
【发布时间】:2020-03-29 19:24:11
【问题描述】:

我正在尝试在 CruiseControl.NET 实例上运行几个任务(准确地说是 xunit task)。

如果其中一项任务失败,构建将中止。

如何防止这种情况发生?我希望 CC.NET 运行所有任务,即使其中一些任务失败(它们不相互依赖)。

我一开始尝试在并行任务中运行我的任务,但大多数时候会随机失败并出现空引用异常(看起来像 CC.NET 中的错误)。

另外,我试图在CC.NET config format docs 中找到一些东西,但在那里也没有成功。

【问题讨论】:

    标签: cruisecontrol.net xunit.net


    【解决方案1】:

    这就是 CCNet 中任务的概念。如果一个失败,停止运行以下任务。 可能的解决方案:

    • 设置 successExitCodes 属性以包含所有退出代码(如果数量很少)
    • 将您的任务放在发布者部分。发布者和任务具有相同的基本类型 (ITasks),但发布者被设计为即使前一个失败也能运行

    【讨论】:

    • 不幸的是,这种情况下的退出代码似乎是more or less related to the number of failed tests,因此有点开放。我会研究发布者的解决方法。
    • 另一种选择是制作一个批处理文件,调用测试 exe 并忽略输出,它始终是绿色的。但它的价值是什么,我不知道。也许您有 5 个测试套件,并且想要全部运行它们,即使第一个测试套件失败。在这种情况下,您仍然可以使用批处理文件方法,但将测试的结果放在变量中,当所有测试都运行并发生错误时,让批处理文件失败
    • “但它的价值是什么,我不知道。” - 对于测试运行,我们大部分时间都不会真正查看整体结果;重点是全面了解失败(有时也包括通过)测试用例的诊断输出,以及测试自动、定期并在基于最新完整构建的定义环境中运行的事实。您提出的批处理文件方法在任何情况下似乎都非常有用,如果整体结果很有趣,那么您在最后确定它的解决方案应该就可以了 - 谢谢 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多