Jenkins触发构建依赖于构建参数

时间:2016-02-11 16:08:59

标签: jenkins jenkins-plugins jenkins-workflow

我有一个jenkins管道设置如下,其中Build A是管道的开始,在完成时触发构建B等等(见下文)..到目前为止,我已经实现了Build A,B和C.我有使用Jenkins参数化触发器插件作为后期构建操作来触发我的构建。

无论如何,我可以在Build B完成之后取决于构建在构建B之后使用fork启动构建的参数,如下所示。构建C和构建D是部署构建,将部署到不同的环境。因此,如果将develop作为参数传递给Build A,那么它将调用Build C else,如果test作为param传递,它将在Build B之后调用Build D。

环顾四周,不知道如何做任何想法

由于

Parameterised Build A eg: Params a=1 b=2
              |
              |
Parameterise Build B (uses params from build A)
              |
              |
    ------------------------
    |                       |
    |                       |


Build C                   Build D

2 个答案:

答案 0 :(得分:0)

我使用灵活的发布者插件并在参数名称上使用regualr表达式来决定触发哪个构建。类似于我认为的条件插件

答案 1 :(得分:0)

您可以使用Pipeline Plugin(以前称为工作流程)轻松设置此内容。

创建一个新的管道作业,检查"此构建已参数化"选项,并创建所需的两个字符串参数(例如serverfoo),然后像这样定义管道脚本:

// Pass the parameters used to start this pipeline into the first two jobs
def p = [
  [$class: 'StringParameterValue', name: 'server', value: server],
  [$class: 'StringParameterValue', name: 'foo', value: foo]
]

// Build the first job and wait for success
build job: 'one', parameters: p

// Build the second job and wait for success
build job: 'two', parameters: p

// Decide which job to build next, and then start it
def deployJob = (server == 'develop') ? 'three' : 'four'
build deployJob

这将使用相同的参数开始您的前两个作业(在此示例中我也称为serverfoo),然后显然只会启动一个其他作业job,取决于启动管道时server参数的值。