我有一系列工作,可以构建一个应用程序。我们称这个链为1。
我想在其他工作链(链2)的中间包含这些步骤。如果我这样做,链1的最后一个工作得到一个后续工作,当我只想构建原始链1时,我无法控制,不能构建。
J1
|
J2 J2
| |
J3 J3
|
J4
我不想复制J2和J3,但这不可能,不是吗?
答案 0 :(得分:1)
我在stackoverflow.com上发现了一个受其他答案启发的解决方案:Jenkins - conditions between build steps
在前任作业中,我编写了一个带有Windows批处理作业的临时文件:
echo call_conditional_next_job = true > c:\temp\build.properties
要读出属性文件并设置一些环境变量,我使用“Jenkins Environment Injector Plug-in”。稍后在链中的几个作业我添加了以下windows批处理作业:
链中的几个作业我使用“Jenkins Environment Injector Plug-in”来读出属性文件。然后在同一个工作中我使用以下windows批处理作业来条件启动“条件下一个工作”jenkins工作:
IF "%call_conditional_next_job%"=="true" wget http://localhost:8080/job/conditional-next-job/build?delay=0sec
IF NOT "%call_conditional_next_job%"=="true" echo "do not call conditional-next-job."
如果找到一种更优雅的方式在流中向下发送环境变量......那将很高兴知道。
答案 1 :(得分:0)
不像你描述的那样。
然而,疼痛并不是那么糟糕。在“新建作业”对话框中,您可以复制另一个预先存在的作业,因此您只需要复制J2和J3,然后更改J3的“构建后”标记。如果您不希望这两组作业出现在同一构建页面上,则可以使用插件来过滤作业。
答案 2 :(得分:0)
如果J1和J3共享一个通用的指纹文件,可能有办法使这个工作。