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

我有一系列工作,例如: JobA <- JobB <- JobC <- JobC-tests ,其中 <- 表示"produces artifacts for" . 因此, JobA 会生成依赖于 JobB 的工件,依此类推(从右向左读取,这意味着"depends on") .

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

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

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

  • 如果fooC更改,则构建JobC但不构建JobC测试 .

  • 如果barC更改,则构建JobC,然后在JobC完成时构建JobC测试 .

  • 如果barC-tests发生更改,请使用上次成功的JobC工件构建JobC测试 .

  • 如果手动启动JobC,请不要构建JobC测试 .

  • 如果手动启动JobC测试,请不要构建JobC .

  • JobC阻止上游作业(JobB) .

我尝试使用Conditional BuildStep plugin但这对我来说似乎根本不起作用 . 我将JobC设置为从SCM触发中排除barC,并将JobC测试排除在轮询barC之外,在JobC测试中使用条件构建步骤,仅在SCM更改触发时构建JobC . 对barC测试的更改不会触发任何构建,如果这完全有效,那就没有问题 . 我遇到的问题是JobC测试根本没有触发JobC .

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

任何帮助或想法将不胜感激 .