Jenkinsfile - 如何为所有阶段传递参数

Kit*_*son 3 jenkins jenkins-pipeline

为了解释这个问题,请考虑我有 2 个 jenkins 工作。


作业 1 : PARAM_TEST1

它接受一个名为“MYPARAM”的参数化值


作业 2:PARAM_TEST2

它还接受一个名为“MYPARAM”的参数化值


有时我需要按顺序运行这 2 个作业 - 所以我创建了一个单独的管道作业,如下所示。它工作得很好。

它还接受一个名为“MYPARAM”的参数化值,以将其简单地传递给构建作业步骤。

pipeline {
    agent any
    stages {
        stage("PARAM 1") {
            steps {
                build job: 'PARAM_TEST1', parameters: [string(name: 'MYPARAM', value: "${params.MYPARAM}")]
            }
        }
        stage("PARAM 2") {
            steps {
                build job: 'PARAM_TEST2', parameters: [string(name: 'MYPARAM', value: "${params.MYPARAM}")]
            }
        }     
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题:

这个例子很简单。其实我有20个工作。我不想parameters: [string(name: 'MYPARAM', value: "${params.MYPARAM}")]在每个阶段都重复。

有没有办法在一个地方为所有构建作业步骤设置参数?

hak*_*iri 5

您可以做的是将公共参数放在管道级别,并将特定参数添加到阶段中的那些

pipeline {
    agent any
    parameters {
        string(name: 'PARAM1', description: 'Param 1?')
        string(name: 'PARAM2', description: 'Param 2?')
    }
    stages {
        stage('Example') {
            steps {
                echo "${params}"
                script {
                    def myparams = params + string(name: 'MYPARAM', value: "${params.MYPARAM}")
                    build job: 'downstream-pipeline-with-params', parameters: myparams
                }    
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)