源代码控制中的 Jenkinsfile 共享参数

Jenkinsfile shared params in source control

我是 jenkins 的新手,继承了一堆代码质量未知的声明性管道。每个管道都使用文件夹属性来设置共享的默认参数值。这将基本变量置于源代码控制之外,从而终止了我们的 PR 过程和我们的调试历史记录。例如

    //pipelineA/Jenkinsfile
    pipeline {
        parameters {
            string name: 'important_variable', defaultValue: folderProperty('important_variable')
        }
        //etc
    }

    //pipelineB/Jenkinsfile
    pipeline {
        parameters {
            string name: 'important_variable', defaultValue: folderProperty('important_variable')
        }
        //etc
    }

然后在根文件夹中设置一个属性important_variable"Hello World"

有没有办法通过设置文件夹 属性 从 yaml 中提取变量,或者使用共享库来将其纳入源代码管理?

感谢您的帮助!

万一有人读到这篇文章,我们的结局是:

  1. 创建 bootstrap.groovy 文件
  2. 此文件必须放在您的存储库绝对顶部的 /vars 目录中
  3. 使用 Jenkins UI 我们转到管道的父目录 > config 并创建了一个名为 config-lib 的共享库,它指向我们的 repo 并自动公开 bootstrap.groovy 文件方法作为只要文件在正确的地方
  4. bootstrap.groovy 文件有一个 call 方法,returns 一个带有我们默认参数的键值对的映射。此方法必须命名为 call
  5. 在管道的 Jenkinsfile 中,我们包括以下两行:
@Library("config-lib") _
config = bootstrap()
  • 库装饰器(注意它以_结尾)导入jenkins[=64=中定义的config-lib方法]

  • bootstrap 函数调用 bootstrap.groovy 文件中的 call 方法 config-lib

  1. 在 Jenkinsfile 中使用 config 映射来填充参数默认值
pipeline {
    parameters {
        string name: 'foo', defaultValue: config.foo
    }

大功告成。

这个视频帮助很大:https://youtu.be/Wj-weFEsTb0