【发布时间】:2017-03-14 11:43:14
【问题描述】:
背景: 我们有许多 Jenkins 顶级作业,它们使用(和共享)其他作业作为子程序。为了控制整个流程,我们使用 Jenkins Parameterized Trigger Plugin。
然后,顶级作业从子构建中收集测试报告、构建报告等,并方便地一次性发布它们。它工作得非常好。
手头的问题:每个顶级作业都以许多参数开始,并且只有其中的一部分被传递给子作业。对于某些子作业,参数与前一段时间相同,即上次从该顶级作业调用子作业时,但我们的顶级脚本不知道这一点。 本质上,我们浪费了构建时间,使用相同的参数再次构建子作业。
在一个完美的世界中 Parameterized Trigger Plugin 会有一个类似
的选项- 如果参数相同(且配置未更改),请勿重建作业。
它将执行以下步骤:
- 将给定作业的所有保留构建的构建参数与当前参数进行比较。
- 如果自构建找到的作业后作业配置未更改,请将环境变量设置为指向上面找到的旧作业。
- 如果在构建找到的作业后未找到作业或作业配置已更改,请照常执行构建。
不幸的是它似乎不存在,我也找不到提供我想要的功能的替代插件。
Groovy 来拯救? 这就是我猜Scriptler Plugin 和 Groovy 脚本会派上用场的地方,因为它可以让我在子作业中执行检查,然后设置我可以在Conditional BuildStep Plugin 中使用的环境变量像往常一样执行构建,或者跳过构建并使用 EnvInject Plugin 设置构建环境变量。
我的编程问题:我是 Groovy 和 JAVA 的新手。不过,我还有很多其他(汇编、C 和脚本)编程经验。我已经搜索了所有的示例脚本,但没有找到任何与我在这里想要做的远程相似的东西。任何有关如何执行此操作的提示,包括替代功能,将不胜感激!
【问题讨论】:
-
作为功能请求添加到JENKINS-42751
标签: jenkins jenkins-plugins jenkins-scriptler