Jenkins 脚本管道中的等效选择
choice equivalent in Jenkins scripted pipeline
我最近将声明式管道重构为脚本形式。即使一切看起来都很好,我也有一个问题来自多值参数的初始化。
在我的声明性管道中,我使用了以下多值参数的定义(它应该正常工作):
parameters {
choice(choices: ['fix', 'major', 'minor', 'none'], description: "Increase version's number: MAJOR.MINOR.FIX", name: "VERSIONING")
}
我将其重构为脚本管道的这种形式:
properties([
parameters([
choice(choices: ['fix\nmajor\nminor\nnone'], description: "Increase version's number: MAJOR.MINOR.FIX", name: "VERSIONING"),
]),
])
问题是,当我意识到某些东西没有正常工作,并使用 sh """echo "Versioning parameter check:" ${params.VERSIONING}"""
步骤打印变量值时,我从 Jenkins 的控制台得到了这个:
Versioning parameter check: false
这既是一个不在列表中的值,也是一个不同类型的值(布尔值而不是字符串)。
有没有办法在 Jenkins 脚本管道中实现多值参数初始化?
为什么这个指令在脚本管道中不能开箱即用,而在声明类型中却可以?
这是错误还是我做错了什么?
尝试定义选择参数的其他选项:
properties([
parameters([
[$class: 'ChoiceParameterDefinition',
choices: 'fix\nmajor\nminor\nnone\n',
name: 'VERSIONING',
description: "Increase version's number: MAJOR.MINOR.FIX"
],
]),
])
你的定义完全正确。您只需要将选项作为列表项而不是 \n 分隔值传递。
properties([
parameters([
choice(choices: ['fix', 'major', 'minor', 'none'], description: "Increase version's number: MAJOR.MINOR.FIX", name: "VERSIONING"),
])
])
我们将以下内容用于选择参数,因此它看起来像您自己的定义但没有括号:
properties([
parameters([
choice(choices: 'fix\nmajor\nminor\nnone', description: "Increase version's number: MAJOR.MINOR.FIX", name: "VERSIONING"),
]),
])
如果你希望默认值为空,只需像这样添加一个空的首选:
choice(choices: '\nfix\nmajor\nminor\nnone'
我最近将声明式管道重构为脚本形式。即使一切看起来都很好,我也有一个问题来自多值参数的初始化。
在我的声明性管道中,我使用了以下多值参数的定义(它应该正常工作):
parameters {
choice(choices: ['fix', 'major', 'minor', 'none'], description: "Increase version's number: MAJOR.MINOR.FIX", name: "VERSIONING")
}
我将其重构为脚本管道的这种形式:
properties([
parameters([
choice(choices: ['fix\nmajor\nminor\nnone'], description: "Increase version's number: MAJOR.MINOR.FIX", name: "VERSIONING"),
]),
])
问题是,当我意识到某些东西没有正常工作,并使用 sh """echo "Versioning parameter check:" ${params.VERSIONING}"""
步骤打印变量值时,我从 Jenkins 的控制台得到了这个:
Versioning parameter check: false
这既是一个不在列表中的值,也是一个不同类型的值(布尔值而不是字符串)。
有没有办法在 Jenkins 脚本管道中实现多值参数初始化? 为什么这个指令在脚本管道中不能开箱即用,而在声明类型中却可以? 这是错误还是我做错了什么?
尝试定义选择参数的其他选项:
properties([
parameters([
[$class: 'ChoiceParameterDefinition',
choices: 'fix\nmajor\nminor\nnone\n',
name: 'VERSIONING',
description: "Increase version's number: MAJOR.MINOR.FIX"
],
]),
])
你的定义完全正确。您只需要将选项作为列表项而不是 \n 分隔值传递。
properties([
parameters([
choice(choices: ['fix', 'major', 'minor', 'none'], description: "Increase version's number: MAJOR.MINOR.FIX", name: "VERSIONING"),
])
])
我们将以下内容用于选择参数,因此它看起来像您自己的定义但没有括号:
properties([
parameters([
choice(choices: 'fix\nmajor\nminor\nnone', description: "Increase version's number: MAJOR.MINOR.FIX", name: "VERSIONING"),
]),
])
如果你希望默认值为空,只需像这样添加一个空的首选:
choice(choices: '\nfix\nmajor\nminor\nnone'