首页 > 解决方案 > 在 Jenkins 管道中的所有下游作业上使用相同的节点

问题描述

我尝试使用以下脚本,但所有下游作业都在不同的节点上运行。

知道如何获得一个随机节点并在同一个节点上运行所有下游作业吗?

#!/usr/bin/env groovy

pipeline {
    agent { label 'WindowsServer' }
    
    stages{
        stage("Get Dev Branch"){
            steps {
                script {
                    build(job: "GetDevBranchStep", parameters: [string(name: 'DevBranchName', value: "${params.CloudDevBranch}")])
                }
            }
        }
        
        stage("Get SA Branch"){
            steps {
                script {
                    build(job: "GetSABranchStep", parameters: [string(name: 'SABranchName', value: "${params.SABranch}")])
                }
            }
        }
        
        stage("Compile Models and Copy To Network Folder"){
            steps {
                script {
                    build(job: "CompileNewModelsAndCopyToNetwork", parameters: [string(name: 'DevBranchName', value: "${params.CloudDevBranch}"), string(name: 'SABranchName', value: "${params.SABranch}"), string(name: 'GetSAStepJobName', value: "GetSABranchStep"), string(name: 'GetDevRepoJobName', value: "GetDevBranchStep"), string(name: 'NetworkFoderToCopyTo', value: "NetworkFolderAddress")])
                }
            }
        }
    }
}

标签: jenkinsjenkins-pipelinejenkins-declarative-pipeline

解决方案


  1. 使用 ${NODE_NAME} 作为附加参数提供下游作业
  2. 在代理部分的下游作业中,您可以使用:

    代理{标签“${params.NODE_NAME}”}

(同时没有找到如何将上游作业的参数注入下游而不实际将它们作为输入参数一一插入)


推荐阅读