Jenkins多模块编译技巧

考虑下面的场景:服务器

一个Git repository中有6个Java项目A,B,C,D,E,F.架构

A是最底层模块。B依赖A, C,D,E,F又同时依赖A和B。 这时候项目能够分红三层关系。maven

 

需求:ui

1.Jenkins只编译文件有改动的项目xml

默认状况系,只要一个Git repository中有代码改动,6个项目就所有会被编译,这显然是很是浪费资源的.资源

安装Pathignore plugin后,在每一个Jenkins的项目中以下图设置:虚拟机

** 表明sdk/common目录下的全部子目录的文件产品

 

2.手动指定编译顺序it

因为咱们采用的是maven项目,Jenkins能够根据pom.xml知道项目间的依赖关系,所以无需设置就能够自动一层层编译。io

可是Jenkins会并行编译不一样的项目,为了节省服务器的资源,能够经过手动设置来控制。

能够在Build other projects里面 选择下一步要编译的项目。

 

3.还能够指定Advanced Project Options里面的两个选项:

Block build when upstream project is building

Block build when downstream project is building

 

注意,2和3只是控制了编译顺序,可是1仍然会起到做用。若是A的代码提交出发了自动编译,而后第2步指定了以后要编译B, 而规则1检查B是否有代码变更,若是B代码没有改动,则编译终止。 这是很是合理的,节省了不少资源。

 

注意,仅仅适用于Java等基于虚拟机的语言,若是是C++,最好项目所有从新编译,除非你使用的是相似COM的技术搭建产品架构,而且interface没有改变。

相关文章
相关标签/搜索