如何运行CruiseControl.NET任务但仅在特定任务结束后?

时间:2009-11-12 21:14:39

标签: .net continuous-integration cruisecontrol.net ccnet-config

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

4 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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擅长做这类事情。

答案 2 :(得分:2)

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

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

答案 3 :(得分:0)

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