2012-08-08 42 views
5

所以在這裏多長壽命分支的顛覆,詹金斯,魔豆設置:發佈與使用maven

  • 主幹/ - >發展主線
    • CI基礎上籤
    • 成功的CI構建產卵CD構建推向 「測試」 魔豆環境
  • 分支/ QA/- >當前發行候選版
    • CI基礎上籤
    • 成功的CI構建派生是推動CD構建以 「QA」 魔豆環境
  • 分支/生產/ - >當前版本
    • CI基礎上籤
    • 成功的CI建立產卵是推動以 「督促」 魔豆環境CD構建

基本上就是我想要做的是這樣的:

  • 開發週期在啓動幹線(主幹:0.1-SNAPSHOT)
  • 當開發週期結束分支QA和QA被循環。也在trunk中開始下一個開發週期(trunk 0.2-SNAPSHOT,qa:0.1-SNAPSHOT)
  • 當qa循環完成時,轉到prod並執行maven release。也開始下一個QA週期(軀幹0.2-SNAPSHOT,QA:0.2-SNAPSHOT,PROD:0.1),其中在每一個發展cylce的端

的想法是有短跑結束和QA週期開始。 qa週期完成後,它將被推送到生產環境。

我想保留分支併合併到\從分支而不是刪除並重新創建。這個想法是,在qa中進行的任何修復都會合併到後面的主幹中,並且在prod中進行的任何更改都會合並回qa(並返回到主幹中)。

prod因此是一個「熱」分支,代表了生產環境的當前狀態。

這是一個爲期一週的短跑運動的開發團隊。

問題:

  1. 這是如何設置的聲音?
  2. 我可以讓maven正確行事,還是我需要編寫腳本?
  3. 誰是你的爸爸?他做了什麼?

回答

7

我不會推薦qa和prod分支。閱讀顛覆最佳實踐。我建議The SVN Book,特別是關於分支/合併的第4章。

即使是QA(通過標籤),您也應該對每個版本進行版本更新。 Trunk用於當前的開發工作,標籤用於發佈的版本(定義爲「功能完備」,而不是其所在的環境),分支用於缺陷修復(除其他外)。

示例方案:

1.0版是集生產,你的團隊剛剛發佈了2.0到QA測試,並且現在正在開發3.0版本。此時你會:

  • /中繼線(開發工作3.0)
  • /tags/2.0(用於QA)
  • /tags/1.0(歷史,什麼是生產)

如果您的QA團隊在2.0中發現問題,您將從2.0標籤中創建一個分支。讓你的修復,合併到主幹然後釋放分支爲2.0.1(另一個標籤)。然後你會被留下。

  • /中繼線(開發者3.0工作,+ 2.0缺陷修復)
  • /branches/2.0.*(使用*字符表示這是所有2.0 *如果在2.0代碼中發現另一個缺陷,您可以重複使用同一分支)
  • /tags/2.0(原始標籤QA正在測試該缺陷)
  • /tags/2.0.1(2.0代碼庫,只有缺陷修復程序)
  • /tags/1.0(歷史是什麼在生產中)
+0

謝謝,有道理。 – 2012-08-19 00:53:59

1

我之前已經做過一些類似的分支和釋放工作,根據我的經驗,您所描述的設置最終變得非常笨重和官僚化。

Domenic D.的答案非常接近我喜歡的那種設置,特別是對於少數開發人員。您擁有的分支越多,代碼庫管理越複雜,越多很可能你會通過錯誤的合併實踐來引入錯誤。

在我看來,你沒有提到的一件事很重要,因爲在開始時要正確使用檢查策略。 SCM不是不完整的工作的備份,您應該努力確保主線至少始終在建設中。對此要嚴格,最終會讓每個人的生活更輕鬆。

但主要的是,不管你發佈什麼發佈程序,都要確保你從你的團隊買進,並且他們不必被「強制」到位。這是一個跡象,表明你所提出的內容可能有問題是不正確的,並可能很快被忽略或顛覆。

+0

我同意這一點。 SCM不是備份。經常提交併且沒有編譯錯誤。 – 2012-08-31 12:37:41