ForceBuild关注此场景 - CruiseControl.NET

时间:2012-11-12 14:33:53

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

我有三个有问题的项目,我们称之为A,B和C.其中'A'只是为B准备一个cetain构建场景,这是主要版本。 C清理场景并基本上将B重置为其原始状态。 我已将这些项目设置在同一队列中,并且在项目B失败时,大部分工作都会对此过程进行测试。这是情况,将在下面解释。

<project name="A" queue="main">
    <publishers>
     <email status of build/>
      <forcebuild>
        <project>B</project>
      </forcebuild>
      <forcebuild>
        <project>C</project>
      </forcebuild>
       </publishers>
   <task>Prepares special scenario</task>
 </project>
 <project name="B" queue="main">
   <publishers>
   </publishers>
    <task>Builds main project</task>
 </project>
 <project name="C" queue="main">
   <publishers>
   </publishers>
    <task>Resets special scenario</task>
 </project>

方案:

  1. 当强制项目'A'时,它会构建项目B,如果B成功,它会构建C.这样可以正常工作。
  2. 当强制项目'A'时,它会构建项目'B',如果B失败,它会构建C.在我的情况下这也很好。
  3. 现在,在项目B中修复了第2个场景和错误;如果再次强制执行项目A并且项目B显示“固定”的巡航状态,则它不会构建C.这不是很好吗?
  4. 如果发生No.2和No.3的组合,有没有人能够看到为什么项目C不能构建?欢迎任何帮助或指导。

    感谢。

2 个答案:

答案 0 :(得分:1)

项目A可以负责清理当前状态并准备新构建。

比如说B的构建过程中出现了电源故障。在此配置中,您需要手动强制C才能运行构建过程吗?

如果A运行与C相同的任务,那么作为自己的任务,这样就可以解决这个问题,我相信也是如此。

答案 1 :(得分:1)

完成后,应始终清理测试环境。我建议将project trigger用于项目C,并将其设置为类似于以下内容。如果A成功,这将允许C始终运行(可以通过修改C中的项目触发器来更改)。

<project name="A" queue="main">
    <publishers>
     <email status of build/>
     <forcebuild>
       <project>B</project>
     </forcebuild>
   </publishers>
   <tasks>Prepares special scenario</tasks>
 </project>

 <project name="B" queue="main">
 ...
 </project>

 <project name="C" queue="main">
   <triggers>
     <projectTrigger project="A" />
   </triggers>
   <publishers />
   <tasks>Resets special scenario</tasks>
 </project>