这可能是一个不寻常的Jenkins查询,但是我们有一个跨越很多项目的项目。 它们都是基于Linux的,但它们跨越多种体系结构(MIPS,SPARC,ARMv6,ARMv7)。
对于一个特定的组件,我们称之为“video编码器”,因此我们将有4个项目:mips-video-encoder,sparc-video-encoder等。
每个项目都build立在4个独立的从属设备上,标签与其架构相关,也就是说,MIPS从设备具有标签'mips''linux'。
我的目标是:
我已经看了“多configuration”types的工作 – 目前我们只使用简单的单一configuration工作。 我不确定多configurationtypes是否允许我们一次只构build单独的体系结构。 我有一个configurationmatrix玩,但不知道这是否可以改变/适应只是build立一个单一的平台。 它看起来像我可以使用Groovy语句来做到这一点? 就像是:
(label=="mips".implies("slave"=="mips")
也许这可以简化为像奴隶==标签其中标签是工作的原来的名字,当它在单一configuration状态,现在是一个build立参数?
我想我们不需要一个多configuration工作,如果我们可以编程方式select这个奴隶。
我将非常感谢一些build议,关于如何整合我们所拥有的工作数量,并根据作为构build参数的项目体系结构以编程方式更改目标从属服务器。
提前谢谢了,
你可以用系统的groovy脚本来做一个包装工作。 你需要这个groovy插件。 让调用包装工作 – video-encoder-wrapper
,这里是项目符号如何配置它:
ARCH
通过Execute system Groovy script
,根据ARCH
参数为video-encoder
作业分配标签
import hudson.model.* encoder=Hudson.instance.getItem('video-encoder') def arch =build.buildVariableResolver.resolve("ARCH") label= Hudson.instance.getLabel(arch) encoder.setAssignedLabel(label)
调用非阻塞下游项目video-encoder
,不要忘记传递ARCH参数
video-encoder
作业配置中的Set Build Name
选项,并将其设置为${ENV,var="ARCH"} - #${BUILD_NUMBER}
。 它将允许您轻松地跟踪构建历史。 video-encoder-wrapper
作业的并发构建。 它将防止同时向video-encoder
作业分配2个不同的标签 希望能帮助到你