BPE(我自己的缩写)

先来看应该release 关系图。

BPE(我自己的缩写)_第1张图片

这个关系图说的是什么意思呢,就是说Project D被分为了 A,B,C1,C2,C3这么多release,每个release都可以当做一个单独的项目,而其中 A与A1有关联,C1与CC有关联,而A,B中的部分或全部内容需要分别shift到C1,C2,C3中去,而最后D要包含所有这些被划分的release中的内容。

对于这样一个架构的Project,如何做Build呢?这里只考虑和D相关的,单独的release需要做build不在此考虑范围之中。

Project_Build_Process:
|
|-----Prepare Build ENV
           |---Pre Build Cleanup/Set Variable
           |---Copy Build Tools(Copy build tools to local machine)
|-----Prepare Track
           |---General Track List
           |---Add Level Members
|-----Handle Build A1
            |---Extract A1
            |---Local Build A1
            |---Build A1
            |---Publish A1
|----- Handle Build A---omit
|-----Handle Build B---omit
|-----Handle Build  C1/C2/C3---omit
|-----Handle Build CC---omit
|----Build D---omit
|--clean

 

1.General Track List:根据CRIB产生的XML文件来获取每个release对应的track list,其中涉及到对level的检查,对track的检查。并且获取当前每个release的level信息和run number信息
2Add Level Members: 根据最终的track list将每一个release所对应的track添加到对应的release中的level中去。

1.General Track List:根据CRIB产生的XML文件来获取每个release对应的track list,其中涉及到对level的检查,对track的检查。并且获取当前每个release的level信息和run number信息
2Add Level Members: 根据最终的track list将每一个release所对应的track添加到对应的release中的level中去

而对于每一个release中的build步骤和A1基本相似,其中不存在前后以来关系的可以并行进行build。
对于每个release,build的全过程可以分为如下: 1 extract拉代码 2 Build 3 将build的output输出到对应的位置。
其中这三环只能串行,任何一环出错将会终止下一环的进行。

那么对于大型的project 如果release之间存在复杂的依赖关系,如何确定其build的先后顺序呢?

这个可以用数据结构中所学过的图形关系求解来确定。有个啥算法,我忘记了:(。大概的意思是先找到没有任何输入的节点,其是第一个,然后将去从图中去掉并去掉依赖关系,再按照这个步骤寻找,对于中间不存在多个依赖关系的节点,可以任取一点。(在这里就可以直接并行了)

 

 

 

你可能感兴趣的:(BPE(我自己的缩写))