如何在jenkinsfile中定义从管道共享库继承的其他参数?

时间:2018-07-17 13:33:56

标签: jenkins jenkins-pipeline jenkins-shared-libraries

我想添加一种可能性来扩展Jenkins管道中定义的全局参数。每个调用默认管道的JenkinsFile都有默认参数,他能够自己定义参数,如下所示:

@Library('mylib') _ 
generic_pipeline {

 parameters {
            choice(choices: namespaces, description: 'namespaces ?', name: 'namespaceIdChoice')
            string(defaultValue: "$BRANCH_NAME-$BUILD_NUMBER", description: 'What is the project name ?', name: 'projectName')
            }

}

我的generic_pipeline是在共享库generic_pipeline.groovy中定义的 并且它们已经有这样的默认参数:

def call(Closure body) {
    def params = [:]
    body.resolveStrategy = Closure.DELEGATE_FIRST
    body.delegate = params
    body()


    pipeline {

        agent {
            label 'master'
        }

        parameters {
            string(defaultValue: "defaultParam2", description: 'What is defaultParam2 ?', name: 'defaultParam2')
        }
    }
}

我该怎么做?如何为继承定义其他参数?

谢谢

1 个答案:

答案 0 :(得分:3)

我们在/ vars下有一个单独的jobParams.groovy,用于设置常见参数

List commonParams() {
     //return list of parameters
     def paramsList = [
         choice(name: 'ACCOUNT_NAME', choices: ['account1', 'account2'].join('\n'),  description: 'Account Name'),
         choice(name: 'AWS_REGION', choices: PipelineUtils.regions.join('\n'), description: 'AWS Region to build/deploy'),
    ]

     return paramsList
}

然后在您的Jenkins文件中,将列表与具体内容连接起来:

List commonParams = jobParams.commonParams()
properties([
        buildDiscarder(logRotator(numToKeepStr: '20')),
        parameters([
            choice(name: 'MY_SPECIFIC_PARAM', choices: ['1', '2', '3'].join('\n'), description: ''),
            choice(name: 'PARAM2', choices: ['value'].join('\n'), description: ''),
        ] + commonParams)
    ])