如何获取管道中下游作业中上游作业已运行的节点名称

时间:2019-05-14 06:58:09

标签: jenkins jenkins-pipeline jenkins-plugins jenkins-groovy

我有多个带有“ build_run”标签的节点(例如,node1,node2,node3)。因此,当我运行此管道时,无法确定“构建”和“运行”作业是否已在同一节点上运行。 “构建”可发生在“ node1”中,“运行”可发生在“ node3”中。我希望构建和运行都在同一节点上进行。但是我不想用相同的方式硬编码。 我想知道哪个节点已被“构建”拾取。这样我就可以将它作为节点参数传递给Run。 我该如何解决?

stage('Build, run) {
    for(int i=0; i<4; ++i){
        def builds = { 
            stage('Build') {
                build job: 'Build', parameters: [[$class: 'LabelParameterValue', name: 'TestMachine', label: 'build_run']]
            }

            stage('Run') {
               build job: 'Run', parameters: [[$class: 'LabelParameterValue', name: 'TestMachine', label: 'build_run']]
            }
        }
    }
}
parallel builds

1 个答案:

答案 0 :(得分:0)

我使用了下面的方法,它对我有用。 (使用rawBuild.getEnvironment()['NODE_NAME']获取在其中运行作业的节点。)

    def node_to_use = ""
    stage('Build, run) {
        for(int i=0; i<4; ++i){
            def builds = { 
                stage('Build') {
                    def build_var = build job: 'Build', parameters: [[$class: 'LabelParameterValue', name: 'TestMachine', label: 'build_run']]
                    node_to_use = build_var.rawBuild.getEnvironment()['NODE_NAME']
                }

                stage('Run') {
                   build job: 'Run', parameters: [[$class: 'LabelParameterValue', name: 'TestMachine', label: node_to_use]]
                }
            }
        }
    }
    parallel builds