Jenkins:如果被测试的课程没有改变,我如何跳过测试工作?

时间:2013-03-28 03:04:52

标签: testing build jenkins conditional jobs

我在Jenkins中设置条件构建作业时遇到了很多麻烦。 这是我的设置:

我有一系列工作,例如: JobA< - JobB< - JobC< - JobC-tests ,其中< - 表示“产生工件对于”。因此, JobA 会生成 JobB 依赖的工件,依此类推(从右向左阅读,这意味着“取决于”)。

其中一个下游工作,让我们说 JobC 使用2个SCM存储库,让我们称之为fooC和barC。 JobC-tests 有另一个文件集,称为barC-tests。

JobC-tests 需要很长时间。 JobC 非常快。我想避免运行 JobC-tests ,除非barC或barC测试已更改。

我想将我的构建设置为像这样工作:

  1. 如果fooC发生变化,请构建JobC但不构建JobC测试。
  2. 如果barC更改,请构建JobC,然后在JobC完成时构建JobC测试。
  3. 如果barC-tests发生变化,请使用上一次成功的JobC工件构建JobC测试。
  4. 如果手动启动JobC,请不要构建JobC测试。
  5. 如果手动启动JobC测试,请不要构建JobC。
  6. JobC阻止上游作业(JobB)。
  7. 我尝试使用Conditional BuildStep plugin,但这对我来说似乎根本不起作用。我将JobC设置为从SCM触发中排除barC,并将JobC测试排除在轮询barC之外,在JobC测试中使用条件构建步骤,仅在SCM更改触发时构建JobC。对barC测试的更改不会触发任何构建,如果这完全有效,那就没有问题。我遇到的问题是JobC测试根本没有触发JobC。

    我还尝试创建一个'轮询'作业,轮询barC的更改,然后在构建JobC时阻塞,然后构建JobC测试。但是,轮询工作成为上游工作,而且由于JobC阻止上游工作,我遇到了僵局。

    非常感谢任何帮助或想法。

0 个答案:

没有答案