例如我有三个任务:task1、task2、task3。如何编写运行 task3 但仅在 task2 成功结束后运行的CruiseControl.NET配置文件?
4 回答
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>
根据您要完成的任务,这可以通过两种方式轻松完成:
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 擅长做这种事情。
我建议您改为在NAnt或 MSBuild 任务中执行此操作,并将其移出 CruiseControl.NET 配置。
你的任务是做什么的?有什么理由不能在 NAnt 或 MSBuild 脚本中移动它们?
我会推荐一个脚本文件(bat、PowerShell),您可以在其中运行任务并检查是否成功。