如何在jenkins管道中设置默认选项?

flmtquvp  于 2023-04-19  发布在  Jenkins
关注(0)|答案(4)|浏览(232)

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

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

defaultValue在这里无效。我希望该选项是可选的,如果管道以非手动方式运行(通过提交),则设置默认值。

2sbarzqh

2sbarzqh1#

不能在选项中指定默认值。根据choice输入的文档,第一个选项将是默认值。
可能的选项,每行一个。第一行的值将是默认值。
您可以在文档源代码中看到这一点,以及如何在源代码中调用它。

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

mfpqipee2#

正如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
}
e3bfsja2

e3bfsja23#

另一种选择是使用PT_RADIO类型的extendedChoice参数。它支持设置默认值。
你必须安装这个plugin

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

它看起来像下面:

pbgvytdp

pbgvytdp4#

我使用这个解决方案已经有几年了。它与@chris-tompkinson的解决方案类似,但可能有一点不同。其想法是将当前构建中选择的选择值移动到选择值列表的开头,从而在下一次构建时作为新的“默认值”提供。

import groovy.transform.Field

@Field
List<String> TARGET_SYS_VALUES = ['ci', 'dev', 'test', 'staging']

pipeline {
    agent { label any }

    parameters {
        choice(name: 'TARGET_SYS',
                choices: (params.TARGET_SYS ? [params.TARGET_SYS] : []) +
                             (TARGET_SYS_VALUES - 
                                 (params.TARGET_SYS ? [params.TARGET_SYS] : [])),
                description: 'Some fictive target systems')
    }
...
}

相关问题