Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git Jenkins构建订单依赖关系SCM_Git_Maven_Jenkins - Fatal编程技术网

Git Jenkins构建订单依赖关系SCM

Git Jenkins构建订单依赖关系SCM,git,maven,jenkins,Git,Maven,Jenkins,我正在为GitHub上的一个组织进行Jenkins设置,该组织有大约20个repo,具有各种依赖层次结构。当GitHub上的任何回购协议发生变化时,我希望Jenkins构建该回购协议以及所有依赖该协议的回购协议。当只使用几个子项推送一个repo时,这非常简单,但通常我们会一次将更改推送到3或4个repo,并且许多依赖项使用maven中提供的范围,而不是编译,这意味着如果repo B是repo C的父项,并且repo B依赖于具有提供范围的repo a,那么a中的更改只会导致B被编译(不是C)以确

我正在为GitHub上的一个组织进行Jenkins设置,该组织有大约20个repo,具有各种依赖层次结构。当GitHub上的任何回购协议发生变化时,我希望Jenkins构建该回购协议以及所有依赖该协议的回购协议。当只使用几个子项推送一个repo时,这非常简单,但通常我们会一次将更改推送到3或4个repo,并且许多依赖项使用maven中提供的范围,而不是编译,这意味着如果repo B是repo C的父项,并且repo B依赖于具有提供范围的repo a,那么a中的更改只会导致B被编译(不是C)以确保A的变更不会引起B的问题

(深蓝色线表示编译的依赖项,而浅蓝色线表示“提供的”依赖项)

基本上,我想建立一个系统,在这个系统中,构建不会被多次执行。例如,如果我要在Git中对E和C进行更改,我希望它们都进行编译,然后D进行编译。B也应该进行编译,以确保对E的更改不会中断任何内容,但B的子代不需要编译(如果它不止有D)。另一个例子是,如果我按A和C,我希望A、B和C、D按顺序编译,最好不要多次编译D(在上游作业B或C完成后,只将D设置为编译似乎效率低下)

谢谢! 尼克


编辑:这是我试图设置的实际回购协议的依赖关系布局图。较低的项目依赖于较高的项目,浅蓝色的线是“提供的”依赖项而不是在中编译的依赖项。

将每个项目设置为在新代码提交的基础上生成,然后将每个父作业设置为在其一个子项完成生成时生成?@MattClark问题是,当一对子项/子项同时推送到scm时,或当子项/子项同时推送到scm时,某些项目将被编译5次以上他们的多个孩子依赖于推送到scm的同一个孙子。依靠Jenkins来管理这一点,你真的是在玩火。你应该使用适当的依赖关系管理技术、版本控制和工件存储库。