3

例如我有三个任务:task1、task2、task3。如何编写运行 task3 但仅在 task2 成功结束后运行的CruiseControl.NET配置文件?

4

4 回答 4

5

CruiseControl.NET v1.5 使用其新的顺序和并行任务增强了任务的执行...

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

<sequential continueOnFailure="false">
  <description>Example of how to run multiple tasks in sequence.</description>
  <tasks>
    <!-- Tasks defined here -->
  </tasks>
</sequential>
于 2009-11-12T21:52:13.970 回答
4

根据您要完成的任务,这可以通过两种方式轻松完成:

A) CruiseControl.NET 支持所谓的projectTriggers

为了使用这种方法,需要将每个任务隔离到它们自己的项目配置中。基本上,task3 项目监控task2 项目的构建状态。当task2 项目成功完成时,task3 项目会触发构建。要设置 projectTrigger,请在 ccnet.config 中编辑task3 项目定义并创建触发器块,如下所示:

<triggers>
  <multiTrigger>
    <triggers>
      <intervalTrigger seconds="30" />
      <projectTrigger project="task2">
        <triggerStatus>Success</triggerStatus>
      </projectTrigger>
    </triggers>
  </multiTrigger>
</triggers>

B) 改为使用 Nant 目标设置任务的顺序:

正如Wim所指出的,您可能需要考虑将任务分解为 Nant 目标,而不是尝试在 ccnet.config 中执行。就个人而言,我觉得这种方法更舒服,只是因为我知道 Nant 擅长做这种事情。

于 2009-11-12T21:43:54.133 回答
2

我建议您改为在NAnt或 MSBuild 任务中执行此操作,并将其移出 CruiseControl.NET 配置。

你的任务是做什么的?有什么理由不能在 NAnt 或 MSBuild 脚本中移动它们?

于 2009-11-12T21:17:40.303 回答
0

我会推荐一个脚本文件(bat、PowerShell),您可以在其中运行任务并检查是否成功。

于 2009-11-12T21:18:43.140 回答