2016-08-22 64 views
0

我有一个有子项目的git项目。詹金斯git子项目项目的订购

样本表示:

parent 

    core 
    -src 
    -pom.xml 

    projA 
    -src 
    -pom.xml 

    projB 

    projB1 
    -src 
    -pom.xml 

    projB2 
    -src 
    -pom.xml 

    projC 
    -src 
    -pom.xml 

pom.xml (parent pom) 

projAprojB1projB2projC是独立的项目,它采用内部core项目。 实际上,大约有8-10个独立项目。

我正在使用Jenkins的CI。我使用git插件来获取项目细节和maven插件来构建项目并运行测试用例。

我简单地使用clean install的目标。

目前,我创建了一个单一的工作。一些项目花费更多时间(1-2小时)来运行所有测试用例。使用这种方法,项目的执行顺序是随机


  • 有没有什么更好的方法以更好的方式来处理这个和控制构建执行的顺序,这样我建脆弱模块第一&稳定版本以后呢?
  • 建立后core模块我想要并行构建其他模块(2或3在一个时间)以快速构建过程。我怎样才能做到这一点?

回答

1

在父项目上运行maven构建并不完全是随机的。具体根据documentation

反应堆

,处理多模块项目Maven中的机制被称为 到作为反应器。 Maven的核心的这部分执行以下操作:

  • 收集所有可用的模块,来构建
  • 排序的项目到正确的构建顺序
  • 构建所选项目,以

Reactor Sorting

因为多模块内部的模块可以相互依赖,所以 重要的是,反应堆以 保证在需要之前构建任何项目的方式对所有项目进行排序。

整理项目时,下面的关系感到非常荣幸:

  1. 在构建
  2. 插件声明,其中插件是在构建上
  3. 插件依赖另一个模块的另一个模块上的项目依赖构建中的另一个模块
  4. 在构建中的另一个模块上构建扩展声明
  5. <modules> elem中声明的顺序ENT(如果没有其他规则适用)

请注意,只有“实例”引用用于 - dependencyManagement和pluginManagement元素不会造成 变化到反应器中的排序顺序

由于它需要那么长时间来构建它,我怀疑你也可能正在进行一些集成测试。因此,我试图隔离它们并在夜间构建期间运行所有内容,同时在每次提交之后持续集成构建中运行(希望是&)快速单元测试。

关于并行性设置,有几个选项有一个共同点:为每个模块创建一个作业。要列举一些(你可以读一个很好的说明了其中的一些here):

个人我只使用了隐式upstream-downstream支持maven作业& snapshot dependency触发器,这意味着Jenkins会分析模块和触发器之间的依赖关系,以构建适当的相关作业。

+0

真棒...... :) –