首页 > 解决方案 > 詹金斯多分支声明性管道中每个分支的不同参数

问题描述

我在多分支作业中使用 Jenkins 脚本化管道。

有一个参数应该只在主干中可用,而不是在多分支作业的任何分支中可用。

目前使用脚本化管道很容易做到(在共享库中或直接在 Jenkinsfile 上):

def jobParams = [
        booleanParam(defaultValue: false, description: 'param1', name: 'param1')
]

if (whateverCondition) {
    jobParams.add(booleanParam(defaultValue: false, description: 'param2', name: 'param2'))
}

properties([
        parameters(jobParams)
])

我目前正在尝试迁移到 jenkins 声明式语法,但我没有看到创建仅在某些条件下可用的参数的简单方法(我知道我可以忽略它,但我真的不希望它显示它完全)。

到目前为止,唯一的解决方案是将管道也移动到共享库(可能从声明式 1.2开始)。我不喜欢这种解决方案,因为必须复制整个管道,这对于一条线来说似乎有点过于极端。

if (whateverCondition) {
    pipeline {
      agent any
      parameters {
        booleanParam(defaultValue: false, description: 'param1', name: 'param1')
        booleanParam(defaultValue: false, description: 'param2', name: 'param2')
      }
    (...)
    }
} else {
    pipeline {
      agent any
      parameters {
        booleanParam(defaultValue: false, description: 'param1', name: 'param1')
      }
    (...)
    }

}

有没有办法我可以将声明性管道的参数定义的一部分提取到共享库的全局变量或其他东西?

提前感谢您的帮助!

标签: jenkinsjenkins-pipelinejenkins-declarative-pipeline

解决方案


推荐阅读