2014-03-24 131 views
3

我在Jenkins中遇到以下情况。具有多个值的单参数 - 引用扩展选项参数值

工作需要建立多个make目标。这将通过每次运行多次调用make来实现,因为它一次只允许一个目标。我希望允许用户选择在每次运行时构建哪些目标。

我试着用extended-choice parameter插件(多选),但无法弄清楚如何从它解析多个值,以及如何将我的电话结构make

有人可以帮我这个

+0

究竟是什么卡住了? – Slav

+0

对不起,评论不完整。所以...如果我将24个值分配给参数,用户可以选择他想要构建的值吗?而且,詹金斯会按顺序建造它们。我的意思是,哦,$ TARGET有4个值a,b,c和d。好的,让我们建立一个....完成...让我们建立B ...等.., – Jninja

+0

我尝试使用“扩展参数插件”,其中我可以分配多个值的参数。选中复选框选项后,用户可以选择要为此作业选择的值。但是,这项工作没有成功。我将这些值定义为value = x,y ..失败结果表示TARGET = x,y未找到 – Jninja

回答

7

扩展选项参数将始终将其选定值列为TARGET=value1,value2。充其量,您可以强制执行这样的值TARGET="value1,value2"

您必须解析此TARGET值才能将其转换为您想要的格式。

如果你可以传递给目标顺序make,像make value1 value2,所有你需要的是改变的是逗号,TARGET价值空间。你没有提供你的操作系统,所以我会假设* nix。您可以使用以下方法快速做到这一点${TARGET//,/ }

最后,由于make似乎不支持多个目标(根据OP),我们需要一个循环。

所以,在你詹金斯执行shell构建步骤,类型:

for currentTarget in ${TARGET//,/ }; do 
    make $currentTarget 
done 

这将等同于:

make value1 
make value2 

至于事情的顺序:这些值的顺序将始终与作业配置中定义的相同。用户选择这些顺序无关紧要。

+0

感谢您的回复。使用“make value1 value2”会返回错误: – Jninja

+0

它说每次只能指定一个目标...所以构建流程应该像... TARGETS = make1 make2 ....用$ TARGET = make1,然后使用$ TARGET = make2执行构建。 – Jninja

+0

@Anvesh,修改了你的场景的答案:在循环中为每个目标调用'make'。请注意,这是一个非常基本的脚本,没有任何错误检查。还要注意在'$ {TARGET //,/}'中有一个额外的''/''(替换所有出现的''',不仅仅是第一个'','') – Slav

-1

要求: 参数$ TARGETS有26个值(将来可能会添加/删除值)。用户有兴趣选择他想要建立的参数。 $ TARGETS = make1,make2,make3 .......

试用版: Jenkins“扩展选择参数”。可以将多个值分配给参数,并且用户可以选择多个值。 使用make $ TARGETS编译期间,出现错误,无法“make make1 make2”。 我需要 化妆make1 化妆make2

SOLUTION: 在$构建步骤,使用 “for循环”

为currentTarget当前{// TARGET,/};做 化妆$ currentTarget当前 做

由于@Slav 希望这有助于谁可能面临类似情况的人。

谢谢

+0

我不明白你为什么不接受我的答案,然后在你的答案中重复相同的事情。 – Slav

+0

哎呀..好吧。我试图给你的答案评分,我意外地取消选中它。恢复原状。谢谢 – Jninja

+1

干杯:),声誉就像我们的食物。我们为食物工作:P – Slav