BPE(我自己的缩写)

先来看应该release 关系图。

这个关系图说的是什么意思呢,就是说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的先后顺序呢?

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

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

惹不起的程咬金

来都来了,不赏点银子么

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值