如何在声明性jenkins管道中定义从管道共享库继承的其他参数?
我想看看这样的事情是否可行: 但在一个声明性的管道中,我尝试了类似于上面帖子的解决方案,但没有成功 我需要能够声明一个构建参数的共享库,然后在多个声明的管道中使用它 大概是这样的:如何在声明性jenkins管道中定义从管道共享库继承的其他参数?,jenkins,jenkins-pipeline,jenkins-declarative-pipeline,jenkins-shared-libraries,Jenkins,Jenkins Pipeline,Jenkins Declarative Pipeline,Jenkins Shared Libraries,我想看看这样的事情是否可行: 但在一个声明性的管道中,我尝试了类似于上面帖子的解决方案,但没有成功 我需要能够声明一个构建参数的共享库,然后在多个声明的管道中使用它 大概是这样的: pipeline { agent { label 'slave' } parameters { // Build parameters string(defaultValue: 'test', description: 'SCM branch', name: 'UUT_BRANCH', tri
pipeline {
agent {
label 'slave'
}
parameters { // Build parameters
string(defaultValue: 'test', description: 'SCM branch', name: 'UUT_BRANCH', trim: false)
# DEFININED IN SHARED LIBRARY
}
stage('useSharedLib'){
steps {
sayHello 'Stranger'
}
}
我想知道是否有人能提供任何意见?
非常感谢。我从未使用从共享库继承的参数。但这就是它如何处理库中声明的函数: 库中有一个groovy文件,其中包含以下函数:
def call(String name = 'human') {
echo "Hello, ${name}!"
}
在jenkins中将库配置为共享库后,您可以在声明性管道中使用以下函数:
pipeline {
agent {
label 'slave'
}
parameters { // Build parameters
string(defaultValue: 'test', description: 'SCM branch', name: 'UUT_BRANCH', trim: false)
# DEFININED IN SHARED LIBRARY
}
stage('useSharedLib'){
steps {
sayHello 'Stranger'
}
}
也许这将帮助您实现env vars我从未使用从共享库继承的参数。但这就是它如何处理库中声明的函数: 库中有一个groovy文件,其中包含以下函数:
def call(String name = 'human') {
echo "Hello, ${name}!"
}
在jenkins中将库配置为共享库后,您可以在声明性管道中使用以下函数:
pipeline {
agent {
label 'slave'
}
parameters { // Build parameters
string(defaultValue: 'test', description: 'SCM branch', name: 'UUT_BRANCH', trim: false)
# DEFININED IN SHARED LIBRARY
}
stage('useSharedLib'){
steps {
sayHello 'Stranger'
}
}
也许这将有助于您实现env vars,这就是我如何解决我对库中定义的共享参数的需求,而单个作业定义它们自己的自定义参数。这就是我的
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,
)
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}"
}
}
}
}
}
这就是我的库中vars/runTest.groovy
的样子:
#!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,
)
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}"
}
}
}
}
}
这就是我如何解决我对库中定义的共享参数的需求,而单个作业定义它们自己的自定义参数。这就是我的
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,
)
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}"
}
}
}
}
}
这就是我的库中vars/runTest.groovy
的样子:
#!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,
)
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}"
}
}
}
}
}