如何从构建流中调用构建流来传递不同的参数?

时间:2015-09-30 10:52:10

标签: jenkins jenkins-plugins jenkins-workflow

我有3个作业(我们将其命名为job1,job2,job3),它们都接受相同的参数。我有一个构建流程来调用这些工作 例如Build Flow ::

build(job1, param1 : "value1", param2 : "value2" )
build(job2, param1 : "value1", param2 : "value2" )
build(job3, param1 : "value1", param2 : "value2" )

正如您在示例中看到的,所有作业都接受相同的参数。

我想在构建流程(job1,job2,job3)中使用不同的参数值运行相同的序列。 所以现在我有不同的构建流程来将不同的值传递给参数:

例如:

Build flow1---
build(job1, param1 : "value1", param2 : "value2" )
build(job2, param1 : "value1", param2 : "value2" )
build(job3, param1 : "value1", param2 : "value2" )

Build flow2---
build(job1, param1 : "value3", param2 : "value4" )
build(job2, param1 : "value3", param2 : "value4" )
build(job3, param1 : "value3", param2 : "value4" )

我正在考虑将构建流程作为共享并且能够将参数传递给它 喜欢 : 实施例:::

Build flow
build(job1, param1 : $paramvalue1, param2 : $paramvalue2 )
build(job2, param1 : $paramvalue1, param2 : $paramvalue2 )
build(job3, param1 : $paramvalue1, param2 : $paramvalue2 )

我想用另一个构建流程中的不同参数值来调用此构建流程。

我能这样做吗?如是 ,, 1.如何定义并将参数传递给流程?

1 个答案:

答案 0 :(得分:1)

您可以使用Workflow Plugin来实现您的目标。

  1. job1job2job3必须是参数化作业,param1param2作为参数(它们可以是自由式作业或任何您想要的)。
  2. 使用param1param2作为参数创建参数化工作流作业。工作流脚本将是这样的:

    build job: 'job1', parameters: 
      [[$class: 'StringParameterValue', name: 'param1', value: param1],
       [$class: 'StringParameterValue', name: 'param2', value: param2]]
    build job: 'job2', parameters: 
      [[$class: 'StringParameterValue', name: 'param1', value: param1],
       [$class: 'StringParameterValue', name: 'param2', value: param2]]
    build job: 'job3', parameters: 
      [[$class: 'StringParameterValue', name: 'param1', value: param1],
       [$class: 'StringParameterValue', name: 'param2', value: param2]]
    
  3. 然后只运行顶级作业,它会询问您参数值,并触发下游作业(并传递顶级参数)。