1

我正在寻找这样的事情是否可行: 如何在 jenkinsfile 中定义从管道共享库继承的附加参数?

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

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

像这样的东西:

pipeline {  
agent {
    label 'slave'
}

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

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

4

2 回答 2

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}"
                }
            }
        }
    }
}
于 2020-11-12T11:32:33.007 回答
0

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

在库中有一个包含该函数的 groovy 文件:

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

在 jenkins 中将库配置为共享库后,您可以像这样在声明式管道中使用该函数:

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

也许这将帮助您实现环境变量

于 2019-03-18T14:22:03.843 回答