0

我有三个有问题的项目,我们称它们为 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。这不好吗?

如果 2 号和 3 号的组合发生,任何人都可以看到项目 C 将无法构建的原因吗?欢迎任何帮助或指导。

谢谢。

4

2 回答 2

1

项目A能否负责清理当前状态并为新构建做准备。

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

如果A运行与 相同的任务C,那么作为自己的任务,这将消除这个问题,我相信你也是。

于 2012-11-13T07:01:53.567 回答
1

完成后,您应该始终清理您的测试环境。我建议对项目 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>
于 2012-11-13T18:06:58.110 回答