jenkins - 附加到作业属性

标签 jenkins jenkins-pipeline jenkins-job-dsl

我在job-dsl.groovy中定义的工作参数被管道中定义的参数覆盖。

我正在使用job-dsl-plugin和Jenkins管道为每个git分支生成Jenkins作业。正弦我的代码存储在gitLab中,它们需要gitLab集成。我提供使用gitlab-plugin。问题在于'gitLabConnection'看起来只能从Jenkins管道内部应用。

因此,如果在job-dsl中,我会这样做:

branches.each { branch ->
String safeBranchName = branch.name.replaceAll('/', '-')
if (safeBranchName ==~ "^release.*")
{
    return
}

def branch_folder = "${basePath}/${safeBranchName}"
folder branch_folder

pipelineJob("$branch_folder/build") {
    logRotator {
        numToKeep 20
    }
    parameters {
        stringParam("BRANCH_NAME", "${safeBranchName}", "")

        stringParam("PROJECT_NAME", "${basePath}", "")
    {
}

然后在我的Jenkins管道中,添加“gitLabConnection”
node('node_A') {
properties([
    gitLabConnection('gitlab.internal')
])

stage('clean up') {
    deleteDir()
}
///(...)

我必须这样做:
node('node_A') {
properties([
    gitLabConnection('gitlab.internal'),
    parameters([
        string(name: 'BRANCH_NAME', defaultValue: BRANCH_NAME, description: ''),
        string(name: 'PROJECT_NAME', defaultValue: PROJECT_NAME, description: '')
    ])
])

stage('clean up') {
    deleteDir()
}
///(...)

这样我的BRANCH_NAME和PROJECT_NAME不会被覆盖。
还有另一种解决方法吗?
是否可以将'gitLabConnection('gitlab.internal')'附加到Jenkins管道中的属性?

最佳答案

不幸的是,似乎还没有一种方法可以做到这一点。在https://issues.jenkins-ci.org/browse/JENKINS-43758上对此进行了一些讨论,我可能最终会打开一个功能请求,以允许人们“附加到属性”

关于jenkins - 附加到作业属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45984104/

相关文章:

xcode - 除非用户登录,否则钥匙串(keychain)不会从 Jenkins 脚本解锁

docker - Jenkins Docker插件无法连接到Docker服务器主机URL

java - Jenkins 无法识别 Java 1.6

jenkins - 有没有办法检查作业的 jenkins 输出,如果字符串存在则使作业成功,否则失败?

jenkins - 作业 DSL 插件与管道插件

jenkins - 如何在 Jenkins 中组织参数化作业的变体构建?

jenkins - jenkins管道:带管道的多行shell命令

Jenkins Pipeline - 如何从并行构建中获取日志

jenkins-pipeline - Jenkins Job DSL 触发器已弃用

jenkins - 在 Jenkins 管道中使用 Groovy 创建一个包含一些内容的文件