问题描述
我在一家定义了数百个 Jenkins 管道的公司工作。
我们有一组扫描,我们希望每个管道都运行(SonarQube、Checkmarx、Blackduck 等)。有没有办法可以编写一个在每个管道结束时自动调用的函数?我不想进入我们数百个 Jenkinsfiles 中的每一个,并在每个文件中添加一个 post
块......我正在寻找更像一个自动触发的钩子的东西结束每个作业,而无需更改所有作业的配置。
我已经浏览了 Jenkins 文档并查看了已经存在的插件列表,但没有看到任何看起来有希望的东西。
到目前为止,我想出的唯一可能性是拥有一个每晚运行的管道,在我们的 git 中的每个 repo 上找到每个 Jenkinsfile,并使用 Jenkins Pipeline Unit 运行测试以验证所有预期的如果维护人员遗漏了任何内容,则调用函数并通过电子邮件发送给他们。对于我认为相当普遍的需求,这听起来像是付出了很多努力?
解决方法
我不是 100% 确定,但是可以将 Freestyle Jenkins 作业设置为触发“在构建其他项目后构建”。 它甚至说“例如,这对于在构建完成后运行广泛的测试很方便。”
我在一个 Maven 项目和一个 Pipeline 项目上检查了这个,它工作正常。 它似乎不适用于多分支管道项目(它无法识别它们)。
这有点落后,但你可以只列出这条触发线中的所有项目。