强制所有 Jenkins 管道调用函数?

问题描述

我在一家定义了数百个 Jenkins 管道的公司工作。

我们有一组扫描,我们希望每个管道都运行(SonarQube、Checkmarx、Blackduck 等)。有没有办法可以编写一个在每个管道结束时自动调用函数?我不想进入我们数百个 Jenkinsfiles 中的每一个,并在每个文件添加一个 post 块......我正在寻找更像一个自动触发的钩子的东西结束每个作业,而无需更改所有作业的配置。

我已经浏览了 Jenkins 文档并查看了已经存在的插件列表,但没有看到任何看起来有希望的东西。

到目前为止,我想出的唯一可能性是拥有一个每晚运行的管道,在我们的 git 中的每个 repo 上找到每个 Jenkinsfile,并使用 Jenkins Pipeline Unit 运行测试以验证所有预期的如果维护人员遗漏了任何内容,则调用函数并通过电子邮件发送给他们。对于我认为相当普遍的需求,这听起来像是付出了很多努力?

解决方法

我不是 100% 确定,但是可以将 Freestyle Jenkins 作业设置为触发“在构建其他项目后构建”。 它甚至说“例如,这对于在构建完成后运行广泛的测试很方便。”

我在一个 Maven 项目和一个 Pipeline 项目上检查了这个,它工作正常。 它似乎不适用于多分支管道项目(它无法识别它们)。

这有点落后,但你可以只列出这条触发线中​​的所有项目。

还有这个插件 https://plugins.jenkins.io/join/