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

时间:2019-03-14 17:06:36

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

我正在寻找是否有可能发生以下情况: How can I define additional parameters in jenkinsfile who inherit from a pipeline shared lib?

但是在声明性管道中,我尝试了与上述帖子类似的解决方案,但是没有运气。

我需要能够声明一个共享的构建参数库,然后可以在多个已声明的管道中使用它。

类似这样的东西:

pipeline {  
agent {
    label 'slave'
}

parameters { // Build parameters
    string(defaultValue: 'test', description: 'SCM branch', name: 'UUT_BRANCH', trim: false)
    # DEFININED IN SHARED LIBRARY 
}

我想知道是否有人可以提供任何输入? 非常感谢。

2 个答案:

答案 0 :(得分:0)

我从未使用过从共享库继承的参数。但这是库中声明的函数的工作方式:

库中有一个包含该功能的常规文件:

def call(String name = 'human') {
    echo "Hello, ${name}!"
}

在jenkins中将库配置为共享库之后,您可以在声明性管道中使用该函数,如下所示:

stage('useSharedLib'){
    steps {
        sayHello 'Stranger'
      }
    }

也许这将帮助您实现env vars

答案 1 :(得分:0)

这是我解决了我对库中定义的共享参数的需求,而单个作业定义了自己的自定义参数的方法。我的Jenkinsfile如下所示:

#!groovy


@Library('my-library@master') _


properties([
    parameters([
        string(name: 'PARAM_A', defaultValue: '1', description: 'Aaa'),
        string(name: 'PARAM_B', defaultValue: '2', description: 'Bbb'),
        string(name: 'PARAM_C', defaultValue: '3', description: 'Ccc'),
    ] + runTest.commonJobParams())
])


runTest(
    params: params,
)

这是我的图书馆中的vars/runTest.groovy的样子:

def commonJobParams() {
    return [
        string(
            name: 'GOLDEN',
            defaultValue: '999',
            description: 'Description of param from library',
        ),
    ]
}

def call(Map config) {
    pipeline {
        agent {
            ...
        }
        stages {
            stage('Test') {
                steps {
                    echo "Hello ${PARAM_A}"
                    echo "Hello ${PARAM_B}"
                    echo "Hello ${PARAM_C}"
                    echo "Hello ${GOLDEN}"
                }
            }
        }
    }
}