我有 git monorepo 和不同的应用程序。目前,我在根文件夹中有单个 Jenkinsfile,其中包含应用程序所有的管道。当提交只更改了一个应用程序时,为所有应用程序执行完整的管道非常耗时。
我们使用类似 GitFlow 的方法进行分支,因此 Jenkins 中的 Multibranch Pipeline 作业非常适合我们的项目。
我正在寻找一种在 Jenkins 中拥有多个工作的方法,每个工作只有在更改相应应用程序的代码时才会被触发。
对我来说完美的解决方案如下所示:
我在 Jenkins 有几个多分支管道工作。每一个都只查找给定目录和子目录的更改。每个人都使用自己的 Jenkinsfile。作业每 X 分钟拉一次 git,如果现有分支中的适当目录发生更改 - 启动构建;如果有对适当目录进行更改的新分支 - 启动构建。
是什么阻止了我的实施
我缺少一种方法来定义在多分支管道执行扫描期间必须忽略哪些文件夹的提交。Multibranch 管道的“其他行为”没有“轮询忽略对某些路径的提交”选项,而 Pipeline 或 Freestyle 作业有。但我想使用多分支管道。
此处描述的解决方案对我不起作用,因为如果会有新分支仅对“project1”进行更改,那么每当触发“project2”的多分支管道时,它无论如何都会发现这个新分支并构建它。意味着对于每个新分支,我的每个 Multibranch 管道都将至少执行一次,无论是否对适当的代码进行了更改。
感谢任何帮助或建议,我可以如何实现几个多分支管道来监视同一个 git 存储库,但仅在适当的代码更改时触发