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