【发布时间】:2018-08-06 15:51:49
【问题描述】:
我有一个名为 pipeline1 的 Jenkins 流水线,由以下 Jenkinsfile 描述:
node()
{
def server
def action
stage("Configuration")
{
def userInput = input(
id: 'userInput', message: 'Let\'s configure this run !', parameters: [
choice(choices: "server1\nserver2", name: "server", description: "Which server do you want to use ?"),
choice(choices: "stop\nstart\nrestart", name: "action", description: "What do you want to do ?")
]);
server = userInput.server;
action = userInput.action;
}
stage("Run")
{
echo(server)
echo(action)
}
}
它要求用户在配置阶段选择一些输入,然后在运行阶段回显它们。 我想从另一个工作触发这项工作并自动填充输入以避免人为操作。 我尝试使用我们用来构建参数化作业的相同语法并得出这样的结果:
node()
{
stage("Run")
{
build job: 'pipeline1', wait: true, parameters: [
[$class: 'StringParameterValue', name: 'userInput.server', value: "server1"],
[$class: 'StringParameterValue', name: 'userInput.action', value: "stop"]
]
}
}
但它不起作用。它确实触发了 pipeline1 作业,但它等待用户填写输入...
编辑:我想将输入功能保留在 pipeline1 中,而不是使用标准的参数化作业。
你有什么想法来实现这个目标吗?
非常感谢。
【问题讨论】:
-
只需删除stage("Configuration"),并使用
params.server和params.action。 -
@3sky 我没有明确表示我希望能够手动运行我的工作并保持动态输入而不是标准的参数化工作。