我正在尝试在由几个子目录得出结论的monorepo中配置自动拉取请求作业触发。这意味着我需要在每个子目录中运行特定的管道,而不必运行不必要的管道。
我已经尝试过的:
- Github Pull Request Builder plugin-对于那些不是运行脚本管道,而是运行“经典” Jenkins项目的人来说,这是一个很棒的插件。而且,它不再受支持,并且那里的许多问题仍未得到解决。
- Git SCM Jenkins Plugin-具有
includedRegions
和excludedRegions
的有前途的功能,并且应该基于正则表达式触发作业。不幸的是,它无法正常工作,triggers builds on any changes。
- 使用Jenkins收到的Git变更集,在构建开始时执行
Validate stage
,如果所有更改的文件都不以所需的子目录开头-中止并退出构建。这导致数十次中止的不必要构建。
- Jenkins Generic Webhook Plugin-此插件是一个易于使用的插件,它依赖于它在Webhook中接收的json有效负载,并根据定义的过滤器触发作业。问题是在Github的API中,拉取请求的打开/更新事件不包括更改的文件。因此,该用例仅适用于Github的“ push”事件,而不适用于PR事件。
我希望流程如此运行:
- 开发人员在Github中打开拉取请求。他/她的更改与一个名为
APP1/
的monorepo中的子目录有关。
- Jenkins收到通知(或某种形式的Webhook),并触发了构建和测试
APP1
的作业。
- Jenkins将构建/测试结果发送回拉取请求检查视图(我已经涵盖了这个阶段)。