【发布时间】:2011-08-02 10:52:49
【问题描述】:
我一直在处理我公司的 CI 扩展问题,同时试图找出在 CI 和多个分支方面采用哪种方法。 stackoverflow 上有一个类似的问题,Multiple feature branches and continuous integration。我已经开始了一个新的,因为我想获得更多的讨论并在问题中提供一些分析。
到目前为止,我发现有 2 种主要方法可以采取(或者其他一些方法???)。
- 每个分支的多个作业集(这里讨论 Jenkins/Hudson)
- 编写工具来管理额外的工作
- 批量创建/修改/删除作业
- 每个分支的每个作业的自定义设置(SCM url、dep management repos 重复)
- 一些使用 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 个分支的多个作业集(开发和稳定)
- 手动管理这两个集合(如果你改变了一个工作的conf,那么一定要在另一个分支中改变)
- PITA,但至少很少有人管理
- 其他额外分支在被推送到 dev 之前不会获得完整的测试套件
- 开发人员不满意。为什么开发人员应该关心 CI 扩展问题。他有一个简单的要求,当我分支时我想测试我的代码。很简单。
- 手动管理这两个集合(如果你改变了一个工作的conf,那么一定要在另一个分支中改变)
因此,如果我想为开发人员自己的自定义分支提供 CI,我需要为 Jenkins 提供特殊工具(API 或 shellscript 之类的?)并处理扩展。或者我可以告诉他们更频繁地合并到 DEV 并在自定义分支上不使用 CI。你会选择哪一个或有其他选择?
【问题讨论】:
标签: continuous-integration hudson jenkins