我一直在處理在我公司擴展CI的問題,同時試圖找出在CI和多個分支時採用哪種方法。在stackoverflow有一個類似的問題,Multiple feature branches and continuous integration。我已經開始了一個新的討論,因爲我希望得到更多的討論並在問題中提供一些分析。在持續集成中處理多個分支
到目前爲止,我發現我可以採取兩種主要方法(或者其他一些方法)。
- 多組作業每個分支(談論詹金斯/哈德遜在這裏)
- 寫的工具來管理多餘的工作
- 創建/修改/批量刪除作業
- 自定義設置對於每個分支的每個作業(SCM URL,dep管理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個分支(DEV &穩定)
- 手動管理兩套(如果你更改作業下的conf然後一定要在其他分支改變)
-
工作
- PITA但至少這麼幾個管理
- 其他額外分支不會得到一個完整的測試套件,他們被推到dev 前
- 不滿意的開發者。爲什麼開發人員應該關心CI縮放問題。他有一個簡單的請求,當我分支時我想測試我的代碼。簡單。
- 手動管理兩套(如果你更改作業下的conf然後一定要在其他分支改變)
如此看來,如果我想爲自己定製分支機構提供CI的開發者,我需要詹金斯(API或shellscripts還是什麼?)特殊加工和處理縮放。或者我可以告訴他們更經常地合併到DEV,並在沒有CI的自定義分支上生活。你會選擇哪一個或有其他選擇?
湯姆,這隻有在1)發佈和更新都比較容易的情況下才能很好地發揮作用。2)你的大部分改變都很好地隔離了。這對於web開發人員來說是正確的,但是如果你正在做盒裝產品發佈,那麼穩定版本必須不惜一切代價保持穩定,因爲修補程序在大型企業環境中非常昂貴或者甚至是不可能的。 – 2011-04-19 06:33:14
真正的CI不僅僅是整合,也是關於反饋 – 2011-04-19 06:33:58
我選擇這個作爲答案(至少給了賞金,請讓我知道如果我仍然需要標記它是正確的),但我認爲這不是解決我的問題。我已經在http://www.zeroturnaround.com/blog/continuous-integration-and-feature-branches/ – toomasr 2011-04-20 13:10:01