如何根据Jenkins中前一个管道作业的参数获取节点列表?

时间:2016-08-02 16:22:39

标签: jenkins jenkins-pipeline

我有2个管道工作。

詹金斯文件中的第一个:

slave_list = ['test01', 'test02']
build job: 'pipeline-test2', parameters: [[$class: 'NodeParameterValue', name: 'node_list', labels: slave_list, nodeEligibility: [$class: 'AllNodeEligibility']]]

詹金斯文件中的第二个:

echo node_list
for (slave in node_list) {
    echo slave
}

提示:第二个作业的名称是“pipeline-test2”,“node_list”是List类型的参数。

第一个作业触发第二个作业,第二个作业的输出为:

[Pipeline] echo
test01
[Pipeline] echo
t
[Pipeline] echo
e
[Pipeline] echo
s
[Pipeline] echo
t
[Pipeline] echo
0
[Pipeline] echo
1

为什么第二个作业只收到一个参数:test01?我希望第二个作业从第一个接收列表(slave_list)?以及如何完成它?谢谢!

1 个答案:

答案 0 :(得分:0)

我认为这是基于Jenkins doc的正常行为。

 Defines a list of nodes where this job could potentially be executed on. 

 The  job can be executed on multiple nodes/slaves, one after the other
 (concurrent execution is currently not supported). 

因此,每次Jenkins只选择一个节点(这就是为什么你只能看到节点1)来运行你传入的节点数。

如果您确实想要获取节点列表,可以将其作为普通参数而不是节点参数传递。

BR,