Jenkin的Node Label插件的预期行为-不在所有节点上运行

时间:2020-01-10 13:00:29

标签: jenkins jenkins-pipeline jenkins-plugins jenkins-slave

我试图使用插件Node label插件,添加一个 Label 参数,并在管道作业中选择在所有与label匹配的节点上运行 。 但这仅在节点之一上运行,即使节点可以通过构建页面中的显示节点发现。

我还尝试使用了该插件提供的 Label Factory的所有节点选项,但是当我想要作业中有多个标签时,此操作失败,如此处所述:https://issues.jenkins-ci.org/browse/JENKINS-59431 (包括最新评论)

在Google上花费了许多时间后,我开始相信,当我将 Label run全部使用时,所有节点将同时运行,这与其他节点唯一的区别是我在网上看到的示例是它们不是管道作业,因此与管道中的不允许并发构建选项(未选择)相比,并发作业是一个可选选项 >

1 个答案:

答案 0 :(得分:0)

万一有人遇到这个问题,我决定回答这个问题。

我将触发器作业设置为管道,在其中通过带有标签的所有节点的循环内的2个参数构建下游作业:

def nodeArray = nodesByLabel label:"${params.labeled}", offline: false
for(item in nodeArray) {
    build job:"DownstreamJob", parameters:[
            [$class: 'LabelParameterValue', name: 'node', label: "${item}"],
            string(name:"nodeToRunIn", value:"${item}")
        ], propagate: false, wait:false
}

在DownstreamJob中,我从以下内容开始:

node (params.nodeToRunIn) {

可能不是最好的解决方案,因为那样可以使插件按预期工作,但目前正在工作。