我一直在处理公司中CI的扩展问题,并尝试确定在处理CI和多个分支时应采取哪种方法。Stackoverflow上有一个类似的问题Multiple feature branches and continuous integration。我开了一个新问题,因为我希望能够得到更多的讨论并在问题中提供一些分析。
到目前为止,我发现有两种主要方法可以采取(或者可能还有其他方法?)。
到目前为止,我发现有两种主要方法可以采取(或者可能还有其他方法?)。
- 每个分支有多组作业(这里是指Jenkins/Hudson)
- 编写工具来管理额外的作业
- 批量创建/修改/删除作业
- 为每个分支的每个作业设置自定义设置(SCM URL,依赖管理仓库复制)
- 一些人使用shell工具、ant脚本和Jenkins CLI解决此问题的示例。请参见:
- http://jenkins.361315.n4.nabble.com/Multiple-branches-best-practice-td2306578.html
- http://jenkins.361315.n4.nabble.com/Is-it-possible-to-handle-multiple-branches-where-some-jobs-should-run-on-each-one-without-duplicatin-td954729.html
- http://jenkins.361315.n4.nabble.com/Parallel-development-with-branches-td1013013.html
- Configure or Create hudson job automatically
- 会给您的CI集群带来更多负载
- 如果基础设施无法处理新负载,则开发人员的反馈周期会变慢
- 编写工具来管理额外的作业
- 每2个分支(dev和stable)有多组作业
- 手动管理两组作业(如果更改作业的配置,请确保在另一个分支中进行更改)
- 很烦人,但至少可以管理很少的作业
- 其他额外的分支在推送到dev之前不会获得完整的测试套件
- 不满意的开发人员。为什么开发人员要关心CI扩展问题。他有一个简单的请求,当我分支时,我想测试我的代码。简单。
- 手动管理两组作业(如果更改作业的配置,请确保在另一个分支中进行更改)
看起来如果我想为开发人员提供他们自己的定制分支的CI,我需要为Jenkins编写特殊的工具(API或shell脚本或其他什么?)并处理扩展。或者我可以告诉他们更经常地合并到DEV,并在定制分支上不使用CI。你会选择哪一个,还是有其他选项?