【问题标题】:Jenkins Multibranch Pipelines - Configuring properties in branches?Jenkins Multibranch Pipelines - 在分支中配置属性?
【发布时间】:2017-12-14 06:04:14
【问题描述】:

我们已经使用 Jenkins Multibranch Pipeline Plugin 成功建立了一个构建管道,该插件在大多数情况下都运行良好,但我们遇到了一个困扰我们的问题:Jenkinsfile 包含一组属性,这些属性也会显示出来在 UI 中,但如何为各个分支设置默认值?

这就是我们Jenkinsfile 中属性定义的样子:

properties([
    parameters([
        string(defaultValue: 'somevalue', description: 'Some description', name: 'SOME_VALUE'),
        string(defaultValue: 'asdfasdfasdfasdfdasdasdasdasd...', description: 'Client ID', name: 'TEST_CLIENT_ID'),
        // ... more properties
        string(defaultValue: '', description: 'Enter non-empty value to skip tests', name: 'SKIP_TESTS'),
    ]), 
    [$class: 'RebuildSettings', autoRebuild: true, rebuildDisabled: false],
    pipelineTriggers([])
])

我对每个分支构建管道都有一个“显示配置”(管道是自动生成的),我可以在“使用参数构建”时输入值,但我似乎无法保存分支默认值?根本没有“保存”按钮。

我们是否错误地配置了 Jenkins,或者我是否在其他地方这样做了?我想要实现的是能够为每个分支定义属性的默认值。

已安装的版本

  • Jenkins 版本:2.19.4
  • 多分支管道插件版本:2.9.2

【问题讨论】:

  • 只是为了澄清:你在不同的分支上有不同的默认值吗?它不起作用?
  • 没错。或者更好地说:这就是我想要的。在源代码中,我可以只指定一个默认值(或?)。
  • 据我了解,每个分支都有自己的 Jenkinsfile 版本。因此,您可以独立更改默认值。在每个分支上,它将是恒定的,但在各个分支上是不同的。
  • 是的,当然,但这并没有真正的帮助,因为这些更改通常也会在之后合并到 master,这在最好的情况下只会产生很多合并冲突,但最坏的情况会混淆事物。在我们的例子中,这些是用于在 OAuth 授权场景中解析重定向 URI 的客户端 ID。这些需要不同,因为功能构建部署到不同的位置。
  • 你能让它们可计算吗? IE。在某处存储一个 db(或只是 src 中的一个文本文件)并使用当前提交中的元数据、分支名称或对 SCM 服务器的 REST API 请求进行检索。

标签: git jenkins build branch jenkins-pipeline


【解决方案1】:

您可以使用带有双引号字符串的表单

string(defaultValue: "branch-${env.GIT_BRANCH}", description: 'Some description', name: 'SOME_VALUE')

在设置参数的默认值时(正如您在问题中描述的那样)

它受到以下事实的限制:在一个构建中执行“属性”步骤时,它会设置出现在下一个构建中的参数默认值。这是因为参数输入是在 Jenkinsfile 可用之前完成的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 1970-01-01
    相关资源
    最近更新 更多