如何在声明性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}"
                }
            }
        }
    }
}