Linux 将Jenkins配置为在构建时根据构建参数以编程方式确定从属?
这可能是一个稍微不寻常的Jenkins查询,但我们有一个跨越许多项目的项目。它们都是基于Linux的,但它们跨越了多种体系结构(MIPS、SPARC、ARMv6、ARMv7) 对于一个特定的组件,我们称之为“视频编码器”,因此我们将有4个项目:mips视频编码器、sparc视频编码器等 每个项目都构建在4个独立的从机上,其标签与其体系结构相关,即MIPS从机的标签为“MIPS”“linux” 我的目标是:Linux 将Jenkins配置为在构建时根据构建参数以编程方式确定从属?,linux,groovy,jenkins,Linux,Groovy,Jenkins,这可能是一个稍微不寻常的Jenkins查询,但我们有一个跨越许多项目的项目。它们都是基于Linux的,但它们跨越了多种体系结构(MIPS、SPARC、ARMv6、ARMv7) 对于一个特定的组件,我们称之为“视频编码器”,因此我们将有4个项目:mips视频编码器、sparc视频编码器等 每个项目都构建在4个独立的从机上,其标签与其体系结构相关,即MIPS从机的标签为“MIPS”“linux” 我的目标是: 合并所有单独的工作。这将使我们更容易修改作业属性,也更容易添加更多作业,而无需添加这么多特
(label=="mips".implies("slave"=="mips")
也许可以简化为slave==label,其中label是作业处于单一配置状态时的前名称,现在是一个构建参数
我认为,如果我们可以通过编程方式选择从机,我们不需要多配置作业
我非常感谢您提供一些建议,告诉我们如何根据项目的架构(这是一个构建参数),整合我们拥有的作业数量,并通过编程更改目标从机
首先非常感谢,您可以使用系统groovy脚本制作包装器作业。为此,您需要groovy插件。让我们调用包装器作业-
视频编码器包装器
,下面是如何配置它的要点:
- 定义参数
ARCH
- 根据步骤
ARCH参数,将标签分配给Execute system Groovy script
作业视频编码器
import hudson.model.* encoder=Hudson.instance.getItem('video-encoder') def arch =build.buildVariableResolver.resolve("ARCH") label= Hudson.instance.getLabel(arch) encoder.setAssignedLabel(label)
- 调用非阻塞下游项目
,不要忘记传递ARCH参数视频编码器
- 选中
作业配置中的选项视频编码器
,并将其设置为设置构建名称
。它将允许您轻松跟踪构建历史${ENV,var=“ARCH”}-#${Build\u NUMBER}
- 禁用
作业的并发生成。它将防止同时将两个不同的标签分配给视频编码器包装
作业视频编码器
希望能有所帮助这些工作的共同点是什么?只有参数,或者也有常见的构建步骤?有一些常见的构建步骤:实际上,我们将“cd”放入目录并运行“make ARCH=”,其中ARCH=mips/armv7/等等。我们总是将相同的文件名复制回来,所以没有问题。您的意思是仍然保留单独的armv7/ARMv6/mips包并使用此包装器吗?这无助于我们减少詹金斯的工作。如果我“将您的参数ARCH包含在视频编码器构建的名称中”,这是否允许我传递ARCH以生成(通过shell调用)并计算出将作业发送到的正确从机?感谢您不需要为不同的体系结构保留单独的作业。是,如果将
ARCH
参数传递给视频编码器
作业,则可以将其传递给make。顺便说一句,我编辑了一点答案,以便更清楚地了解在构建名称中包含ARCH
。