【问题标题】:How do I set a default choice in jenkins pipeline?如何在詹金斯管道中设置默认选择?
【发布时间】:2021-09-14 23:31:29
【问题描述】:

非常令人沮丧,我找不到这样的例子。如何设置默认选项?

parameters {
    choice(
        defaultValue: 'bbb',
        name: 'param1',
        choices: 'aaa\nbbb\nccc',
        description: 'lkdsjflksjlsjdf'
    )
}

defaultValue 在这里无效。如果管道是非手动运行的(通过提交),我希望选择是可选的并且设置默认值。

【问题讨论】:

  • 如果管道通过提交运行,是否设置了默认值?

标签: jenkins jenkins-plugins jenkins-pipeline


【解决方案1】:

您不能在选项中指定默认值。根据choice 输入的文档,第一个选项将是默认选项。

潜在的选择,每行一个。第一行的值将是默认值。

您可以在documentation source 中看到这一点,以及在source code 中如何调用它。

return new StringParameterValue(
  getName(), 
  defaultValue == null ? choices.get(0) : defaultValue, getDescription()
);

【讨论】:

  • 很有趣,所以如果它以非交互方式触发,param.param1 将成为首选还是为空?
  • @red888 我的理解是脚本式和声明式的第一价值。我还没有测试过这个答案,但我记得受到JENKINS-35698 - Initial run of parameterized pipeline build should return properties default value 的影响。
  • 谢谢,文档不清楚为什么没有整数参数类型,例如卡片上是否有整数参数类型,以使参数功能完整?
  • @ConradB 我不从事很多 Jenkins OSS 的工作,所以我不能告诉你。我已经有一段时间没有在 Jenkins 工作了,所以我不确定事情是否发生了变化。
【解决方案2】:

正如 mkobit 所说,defaultValue 参数似乎不可能,而是我根据之前的选择重新排序了选项列表

defaultChoices = ["foo", "bar", "baz"]
choices = createChoicesWithPreviousChoice(defaultChoices, "${params.CHOICE}")

properties([
    parameters([
        choice(name: "CHOICE", choices: choices.join("\n"))
    ])   
])


node {
    stage('stuff') {
        sh("echo ${params.CHOICE}")
    }
}

List createChoicesWithPreviousChoice(List defaultChoices, String previousChoice) {
    if (previousChoice == null) {
       return defaultChoices
    }
    choices = defaultChoices.minus(previousChoice)
    choices.add(0, previousChoice)
    return choices
}

【讨论】:

    【解决方案3】:

    另一个选项是使用PT_RADIO 类型的extendedChoice 参数。支持设置默认值。

    你必须安装这个plugin

    extendedChoice description: '', multiSelectDelimiter: ',', name: 'PROJ_NAME',
                    quoteValue: false, saveJSONParameterToFile: false, type: 'PT_RADIO',
                    value: 'a,b', visibleItemCount: 2, defaultValue: 'a'
    

    如下所示:

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-06
    • 1970-01-01
    • 2019-01-09
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多