我找不到一个这样的例子,这很令人沮丧。我如何设置默认选项?
parameters { choice( defaultValue: 'bbb', name: 'param1', choices: 'aaa\nbbb\nccc', description: 'lkdsjflksjlsjdf' ) }
defaultValue在这里无效。我希望该选项是可选的,如果管道以非手动方式运行(通过提交),则设置默认值。
2sbarzqh1#
不能在选项中指定默认值。根据choice输入的文档,第一个选项将是默认值。可能的选项,每行一个。第一行的值将是默认值。您可以在文档源代码中看到这一点,以及如何在源代码中调用它。
choice
return new StringParameterValue( getName(), defaultValue == null ? choices.get(0) : defaultValue, getDescription() );
mfpqipee2#
正如mkobit所述,使用defaultValue参数似乎是不可能的,相反,我根据前面的选择重新排序了选项列表
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 }
e3bfsja23#
另一种选择是使用PT_RADIO类型的extendedChoice参数。它支持设置默认值。你必须安装这个plugin
PT_RADIO
extendedChoice
extendedChoice description: '', multiSelectDelimiter: ',', name: 'PROJ_NAME', quoteValue: false, saveJSONParameterToFile: false, type: 'PT_RADIO', value: 'a,b', visibleItemCount: 2, defaultValue: 'a'
它看起来像下面:
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') } ... }
4条答案
按热度按时间2sbarzqh1#
不能在选项中指定默认值。根据
choice
输入的文档,第一个选项将是默认值。可能的选项,每行一个。第一行的值将是默认值。
您可以在文档源代码中看到这一点,以及如何在源代码中调用它。
mfpqipee2#
正如mkobit所述,使用
defaultValue
参数似乎是不可能的,相反,我根据前面的选择重新排序了选项列表e3bfsja23#
另一种选择是使用
PT_RADIO
类型的extendedChoice
参数。它支持设置默认值。你必须安装这个plugin
它看起来像下面:
pbgvytdp4#
我使用这个解决方案已经有几年了。它与@chris-tompkinson的解决方案类似,但可能有一点不同。其想法是将当前构建中选择的选择值移动到选择值列表的开头,从而在下一次构建时作为新的“默认值”提供。