2012-12-15 104 views
3

有什麼辦法可以將成功構建的功能分支推送到另一個分支嗎?TeamCity推送功能分支到主分支

我想有這樣的事情:

Git倉庫(Gitorious/GitHub的什麼)。分行:

  • 主(當前項目的代碼)
  • 質量保證(領域,其中代碼等待QA)
  • 功能分支(許多遠程分支,在那裏開發者可以下發展及其功能)

開發人員應該只能讀取主人並讀取/寫入他的功能分支 QA讀/寫質量保證分支 TeamCity - 讀/寫主人,質量保證,只讀功能分支

現在,我想有這樣的工作流程:

  1. 開發者從主分支拉碼。
  2. 開發人員創建功能分支-A。
  3. 開發者將更改到遠程功能branchA
  4. TeamCity的監視器配備分支
  5. TeamCity的觸發建立並在每個測試提交。
  6. 的TeamCity將更改,以質量爲保證分支,如果構建成功
  7. QA團隊檢查碼(或許運行了一些其他的測試,完整性測試)
  8. 如果QA決定一切正常,他們將更改推送到主分支。

我不知道如果QA的這一步是必要的,也許每個功能分支後,成功的構建和測試應該與主合併。

首先我想知道:它有道理嗎?我只是從CI開始,我不知道它是否會起作用。其次,如果這個工作流是正確的,我想知道如何配置TeamCity來做類似的事情,以及如果會有某種衝突或某些事情可能出錯。

最近我看到有關Git + Jenkins + Gerrit的演講,我看到類似的東西,但對於.NET開發,我個人更喜歡TeamCity,但如果Jenkins更容易做到這一點,我就會改變主意。

回答

1

我們已經使用github實現了與此目標相同的工作流程(儘管實現稍有不同),儘管它可能涉及到一些設置,以確保teamcity存在一些問題。我還有類似問題的另一個答案here

我們的解決方案基本上涉及每個開發者都有自己的主存儲庫的分支,他們已經讀取和寫入權限並從主(綠色)存儲庫提取權限。開發分支(每個故事一個,短暫)的工作,這是由團隊城市建立時,他們推到他們的個人分岔。

一旦開發人員準備好將他們的更改合併到主人中,他們會提交一個拉取請求並檢查代碼,然後最終與他們的主分支進行合併。然後他們將他們的主人布蘭克推到他們的私人叉子上。

如果此構建成功並且所有測試都通過(我們現在還部署到Azure,然後針對部署運行測試),那麼主分支由團隊城市構建代理推送到綠色存儲庫。

這推必須是快進或推被拒絕(這解決了自動合併,這讓我充滿恐懼的潛在問題)

您可以輕鬆地擴展這個有開發者分支推到QA庫和QA對生成服務器執行提交,觸發推送到綠色(或者讓QA有權推入綠色)。

teamcity setup可能有點痛苦,因爲你需要鏈接快照依賴的東西,這就限制了使用模板的能力,並且意味着每個開發者至少需要2個構建配置(我們有4個構建隨着部署到天藍色和運行測試對蔚藍),所以如果你有很多開發人員,這可能是一個痛苦的管理。理想情況下,您不應該這樣做,但由於issues in teamcity仍然未解決,因此如果測試失敗,則不能始終使構建失敗。

+0

我已經讀過你的解決方案,並根據它的配置TeamCity的。這只是一個PoC,目的是展示它的全貌如何,但現在我將安裝它進行生產。 Thx分享一個偉大的職位。我不想使用github,而是使用Atlassian Stash(小團隊)。不知道我是否會切換到Girious,我們會看到。 GitHub不是一個選項。同樣可惜的是TeamCity需要兩個構建配置,因爲我們可以快速用完免費的cnfigurations,但正如我所說,我們將看到它是如何工作的。 Thx再一次。 – Simon

2

看起來像一個有效的場景。

更新:由於TeamCity 8.1有一個專用的Automatic Merge功能。

較舊的回覆: TeamCity沒有捆綁支持自動合併/推動分支機構(對於上面的列表中的數字6)。 TeamCity問題跟蹤器中有一個相關feature request

要獲得在當前TeamCity版本中工作的場景,您可以在TeamCity中擁有一個單獨的構建配置,具有快照依賴性和成功時觸發器,它將抓取功能分支(由TeamCity完成),然後構建腳本將運行合併,推git命令。您將需要使用TeamCity代理端結帳才能做到這一點。

+0

大概你可以注意到這個特性已經在TeamCity 8.1中實現了:http://blog.jetbrains.com/teamcity/2013/10/automatic-merge/ – KIR

相關問題