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

与Jenkins工作流程/管道并行运行的阶段

龙学
2023-03-14
问题内容

请注意:
这个问题是基于旧的,现在称为“脚本化”管道格式的。使用“声明性管道”时,可以将并行块嵌套在阶段块内部(请参阅带有声明性管道1.2的并行阶段)。

我想知道Jenkins工作流/管道插件,特别是并行步骤应该如何工作。如何将它们与构建阶段混合使用。我了解一般模式:

parallel(firstTask: {
  // Do some stuff
}, secondTask: {
  // Do some other stuff in parallel
})

但是,我想并行运行几个阶段(在具有多个执行程序的同一节点上),因此我尝试添加以下阶段:

stage 'A'
// Do some preparation stuff

parallel(firstTask: {
  stage 'B1'
  // Do some stuff
}, secondTask: {
  stage 'B2'
  // Do some other stuff in parallel
})

stage 'C'
// Finalizing stuff

这不能按预期方式工作。“执行任务”任务是并行执行的,但是并行阶段会立即结束,并且不会合并它们应包含的任务。因此,舞台视图不会显示正确的结果,也不会链接日志。

我可以并行构建不同的阶段,还是“并行”步骤仅用于单个阶段?


问题答案:

您不得在内部放置已弃用的,非阻塞作用域stage(如原始问题中所述)parallel

从JENKINS-26107开始,stage采用block参数。您可以放在parallel内部stagestage内部parallelstage内部stage等。但是,不能保证构建的可视化支持所有嵌套。特别是

  • 内置的 管道步骤 (列出构建所运行的每个步骤的“树表”)显示了任意stage嵌套。
  • 流水线阶段查看 插件目前只显示阶段的线性表,在他们开始,无论嵌套结构的顺序。
  • 蓝海将显示顶级阶段,以及顶级阶段parallel内的分支,但目前没有更多。

JENKINS-27394(如果实现)将显示任意嵌套stage的。



 类似资料:
  • 请注意:问题是基于旧的,现在称为“脚本”管道格式。当使用“声明性管道”时,并行块可以嵌套在阶段块内(请参见使用声明性管道的并行阶段1.2)。 我想知道并行步骤应该如何使用Jenkins工作流/管道插件,特别是。如何将它们与构建阶段混合。我知道一般的模式: 我可以并行地构建不同的阶段吗?或者“并行”步骤只意味着在单个阶段中使用?

  • 我正在编写一个Groovy脚本,其中包含部署terraform的作业。我正在使用作业DSL并使种子作业由JCasC实现,一切正常。然后我有一个包含作业的Groovy文件的存储库。 如果我将Groovy文件保持为单个作业,它就可以正常工作。 然而,我希望能够构建具有构建阶段的管道。我知道我可以把管道写在詹金斯文件中 我有这个作为开始: 但是,我看到了这个错误: 我已经尝试了各种方法,并阅读了一堆文档

  • 我有一个简单的Jenkins管道,它创建了一个包含3个容器的pod——jnlp、dind和示例测试 如下所示- 还定义了几个阶段- 现在我的根文件夹中有了这个脚本“示例”,我想运行它,但不知怎么的,它找不到。 Dockerfile看起来像这样- pwd返回“/home/jenkins/agent/workspace/test pipeline”,而不是docker容器路径。 结果如下- 你知道怎么

  • Jenkins管道插件如何运行并行任务 我是jenkins的初学者,我想使用管道插件在jenkins的可用从节点上并行启动一些任务。 我安装了管道插件并在下面的管道内联脚本部分中添加了。 注意:主节点和从站1是我的节点 理想情况下,第一分支和第二分支是什么???? 控制台输出: 由用户匿名[Pipeline]parallel[Pipele][firstBranch]{(Branch:firstBr

  • 我使用Jenkins和Build Pipeline插件来构建一些相当复杂的项目,这些项目需要多个编译步骤: 构建源RPM。 构建二进制RPM(这是执行两次,一次为每个平台)。 部署到YUM仓库。 我解决构建需求的策略包括将公共工作拆分为参数化作业,这些作业可以跨项目和分支重用,每个作业代表管道中的一个阶段。每个阶段都由参数触发,并将构建工件传递给管道中的下一个作业。然而,我在这个策略上遇到了一些麻

  • 问题内容: 我想根据测试工具的输出来并行化Jenkins阶段。但是,我遇到了一个问题,因为所有并行节点的定义都相同(除了jenkins- workflow 插件中当前中断的循环之外)。精简了工作流程脚本示例: 虽然我希望得到如下结果: 我将所有三个节点定义为 三个 -如以下输出所示(请注意重复的输出): 为什么会这样呢?这是中的另一个错误,还是我出了点问题?该 平行 例如 不访问任何变量。 问题答