Jenkins管道-全局参数

时间:2019-05-16 07:20:55

标签: jenkins-pipeline

我已经配置了jenkins管道,该管道对于每个作业都有多个字符串参数。这些参数对于所有构建作业都是通用的。我想在全局级别设置这些参数,以便可以在所有阶段使用我。除了阶段之外,我还有一个重试逻辑,该逻辑在第一次失败后尝试2次。越过3尝试保释。

目前,我已经两次配置了参数,第一次在初始构建触发器中,第二次在重试块中。这是重复的定义。而且在任何时候,所有参数都相同。

我试图在阶段开始之前在顶部定义参数,但是即使在构建步骤中定义的作业需要这些参数,阶段也不会使用这些参数。

pipeline {
    agent {
        label 'master'
    }
    parameters
    {
    string(name: 'VERSION', defaultValue: '', description: 'VERSION No.')
    string(name: 'DEPLOY_TYPE', defaultValue: '', description: 'DEPLOY_TYPE')
    string(name: 'TICKET', RELEASE: '$RELEASE', description: 'Release No.')
    }

stage ("Stage1") {
            steps {
            script {
            def retryAttempt = 0
               try{
                build(
                    job: 'Job1',
                    parameters: [
                        [
                            $class: 'StringParameterValue',
                            name: 'VERSION',
                            value: "${VERSION}"
                        ],
                        [
                            $class: 'StringParameterValue',
                            name: 'DEPLOY_TYPE',
                            value: "${DEPLOY_TYPE}"
                        ],
                        [
                            $class: 'StringParameterValue',
                            name: 'TICKET',
                            value: "${TICKET}"
                        ]
                    ]
                )
                }
                catch(error) {
                 echo "First build failed, let's retry if accepted"
                 retry(2) {
                 build(
                    job: 'Job1',
                    parameters: [
                        [
                            $class: 'StringParameterValue',
                            name: 'VERSION',
                            value: "${VERSION}"
                        ],
                        [
                            $class: 'StringParameterValue',
                            name: 'DEPLOY_TYPE',
                            value: "${DEPLOY_TYPE}"
                        ],
                        [
                            $class: 'StringParameterValue',
                            name: 'TICKET',
                            value: "${TICKET}"
                        ]
                    ]
                )
                 }
               }
            }
          }
    }

我想使用全局参数在管道中定义一次,并在所有阶段使用所有参数。

1 个答案:

答案 0 :(得分:0)

由于所有作业的参数都相同,因此可以将参数作为列表而不是单独传递。

def copyOfJobParams = currentBuild.rawBuild.getAction(ParametersAction).getParameters().collect()
build( job: 'Job1', parameters: copyOfJobParams)

请注意,如果您使用声明性管道,则需要将其包装在script{}块中