我正在寻找是否有可能发生以下情况: 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
}
我想知道是否有人可以提供任何输入? 非常感谢。
答案 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}"
}
}
}
}
}