如何基于Github的更改文件在Jenkins中触发拉取请求作业?

时间:2019-05-12 15:46:25

标签: jenkins github jenkins-pipeline jenkins-plugins pull-request

我正在尝试在由几个子目录得出结论的monorepo中配置自动拉取请求作业触发。这意味着我需要在每个子目录中运行特定的管道,而不必运行不必要的管道。

我已经尝试过的:

  1. Github Pull Request Builder plugin-对于那些不是运行脚本管道,而是运行“经典” Jenkins项目的人来说,这是一个很棒的插件。而且,它不再受支持,并且那里的许多问题仍未得到解决。
  2. Git SCM Jenkins Plugin-具有includedRegionsexcludedRegions的有前途的功能,并且应该基于正则表达式触发作业。不幸的是,它无法正常工作,triggers builds on any changes
  3. 使用Jenkins收到的Git变更集,在构建开始时执行Validate stage,如果所有更改的文件都不以所需的子目录开头-中止并退出构建。这导致数十次中止的不必要构建。
  4. Jenkins Generic Webhook Plugin-此插件是一个易于使用的插件,它依赖于它在Webhook中接收的json有效负载,并根据定义的过滤器触发作业。问题是在Github的API中,拉取请求的打开/更新事件不包括更改的文件。因此,该用例仅适用于Github的“ push”事件,而不适用于PR事件。

我希望流程如此运行:

  1. 开发人员在Github中打开拉取请求。他/她的更改与一个名为APP1/的monorepo中的子目录有关。
  2. Jenkins收到通知(或某种形式的Webhook),并触发了构建和测试APP1的作业。
  3. Jenkins将构建/测试结果发送回拉取请求检查视图(我已经涵盖了这个阶段)。

0 个答案:

没有答案