web-dev-qa-db-ja.com

jenkinsパイプラインでデフォルトの選択肢を設定するにはどうすればよいですか?

とてもイライラして、この例が見つかりません。デフォルトの選択肢を設定するにはどうすればよいですか?

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

ここではdefaultValueは無効です。パイプラインが非手動で(コミットを介して)実行される場合、選択をオプションにし、デフォルト値を設定する必要があります。

17
red888

オプションでデフォルト値を指定することはできません。 choice入力のドキュメントによると、最初のオプションがデフォルトになります。

潜在的な選択肢、1行に1つ。最初の行の値がデフォルトになります。

これは documentation source で見ることができ、また source code でどのように呼び出されるかを見ることができます。

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

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
}
2