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

Jenkins trigger build dependent on build parameters

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

无论如何,在构建 B 完成后,我是否可以根据构建开始的参数,在构建 B 之后分叉构建,如下所示。构建 C 和构建 D 是将部署到不同环境的部署构建。因此,如果 develop 作为参数传递给 Build A,那么它将调用 Build C,否则如果 test 作为参数传递,它将在 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

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

您可以使用 Pipeline Plugin(以前称为工作流程)非常轻松地进行设置。

创建一个新的 Pipeline 作业,勾选 "This build is parameterised" 选项,并创建你想要的两个字符串参数(例如 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),然后显然将仅启动另一个作业作业,取决于启动管道时 server 参数的值。