当前位置: 首页 > 面试题库 >

配置Jenkins在构建时根据构建参数以编程方式确定从属?

金承嗣
2023-03-14
问题内容

这也许是一个有点不寻常的Jenkins查询,但是我们有一个跨很多项目的项目。它们全部基于Linux,但是它们跨越多种体系结构(MIPS,SPARC,ARMv6,ARMv7)。

对于特定的组件,我们将其称为“视频编码器”,因此,我们将有4个项目:mips-video-encoder,sparc-video-encoder等。

每个项目都建立在4个独立的从站上,并带有与其架构相关的标签,即MIPS从站具有标签“ mips”,“ linux”。

我的目标是:

  1. 巩固我们所有单独的工作。这应该使我们更轻松地修改作业属性,并且更容易添加更多作业,而无需花费大量精力来添加大量特定于架构的作业。
  2. 如果愿意,允许我们一次只构建一个体系结构。如果MIPS作业失败,我们只想为MIPS而不是其他人构建。

我看过“多配置”类型的作业-
目前,我们仅使用简单的单一配置作业。我不确定“多配置”类型是否允许我们一次仅构建单个体系结构。我玩过配置矩阵,但不确定是否可以更改/修改它以仅针对 单个
平台构建。看来我可以使用Groovy语句来做到这一点?就像是:

(label=="mips".implies("slave"=="mips")

也许可以简化为诸如slave == label之类的东西,其中label是作业处于单一配置状态时的前一个名称,现在是一个构建参数?

我认为,如果我们可以以编程方式为此选择从站,则我们不需要多配置作业。

我将不胜感激一些建议,以帮助我们如何合并已有的工作数量,并根据作为构建参数的项目体系结构以编程方式更改目标从属。

提前谢谢了,


问题答案:

您可以使用系统常规脚本进行包装工作。您需要为此使用groovy插件。让我们调用包装器作业- video-encoder- wrapper,以下是如何配置它的项目符号:

  • 定义参数 ARCH
  • 通过步骤video-encoder根据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)
  • 调用非阻塞的下游项目video-encoder,别忘了传递ARCH参数

  • 检查作业配置中的选项Set Build Namevideo-encoder并将其设置为${ENV,var="ARCH"} - #${BUILD_NUMBER}。它可以让您轻松跟踪构建历史。

  • 禁用并发video-encoder-wrapper作业。这样可以防止同时为video-encoder作业分配2个不同的标签

希望能帮助到你



 类似资料:
  • 问题内容: 我有一个jenkins管道,其设置如下,其中Build A是管道的开始,并在完成时触发构建B,依此类推(如下所示)。到目前为止,我已经实现了Build A,B和C。我使用了Jenkins参数化的Trigger插件作为构建后的动作来触发我的构建。 无论如何,在构建B完成之后,有什么我可以根据构建B之后的构建用fork启动构建的参数的方法,如下所示。Build C和Build D是将部署到

  • 问题内容: 我能够通过Jenkins Web GUI创建一个新节点,然后让容器中运行的节点通过名称和-secret值连接回Jenkins主节点 例如 有没有一种方法可以通过编程方式创建Jenkins节点并获取密码和从属名称,因此我不必通过GUI来执行此操作? 问题答案: 以编程方式创建代理 您可以使用 CLI命令创建具有给定配置的新代理。 例如,考虑到文件中的此最小JNLP代理配置: 您可以通过C

  • 我正在从我的Eclipse项目中构建一个可运行的JAR,在将其导出为可运行的JAR时,Eclipse提示我提供一个启动配置。 我的问题是,如果我给出一些论点,比如 java-jar测试。jar导入。txt导出。运行这个jar时 它将覆盖导出时给出的启动配置中的参数。

  • 我如何告诉Jenkins使用系统安装的Maven? 为什么它要求MAVEN_HOME而不是m2_home?为什么它不显示当前的系统Maven?当构建运行时,它会给出一个BS错误: 解析POM错误:未能解析POM org.apache.maven.project.project.projectBuildingException:在处理POM时遇到一些问题:[FATAL]不可解决的父POM:未能在ht

  • 问题内容: 我在Jenkins中配置了项目,该项目轮询SCM并在发布更改时开始构建。有一个后构建动作来构建另一个项目。我的问题是,之后要构建的项目具有其自己的参数。如何知道生成后操作触发时指定了哪个参数?现在,如果我使用“选择”,是否只是选择第一个?我如何挑选其他人? 问题答案: 好吧,让我们一个接一个:) 如果要查看使用了哪个参数,可以安装此插件:显示构建参数插件 如果要使用特定参数触发构建,请

  • 从本篇文档开始,我们将介绍 Lavas 构建、运行中使用的配置项。开发者可以在项目根目录下的 lavas.config.js 中定义这些配置项。配置对象的结构大致如下: // lavas.config.js { build: {}, router: {}, middleware: {}, // 省略其他配置项 } Lavas 内部使用 Webpack 进行构建,