2011-12-08 36 views
5

我一直致力於更新我們的構建過程以提高效率,並花了一個星期的時間閱讀最佳實踐和策略,但我仍然沒有找到解決當前問題的解決方案。maven,teamcity和TFS的分支策略

背景

目前我們有一個整體構建/應用程序,確實需要被分開成至少4個應用程序的一些共享庫。除非我們絕對必須,否則我們目前不分支。我們有一個teamcity構建,建立在TFS的每個簽入上。當我們準備發佈時,我們會凍結代碼並只檢查QA中發現的錯誤。顯然這是一種可怕的做法,我們終於獲得批准來改變它。

提出的解決方案

所提出的解決方法是將分裂的應用和具有爲每個應用不同的釋放週期,從螞蟻Maven和分支每釋放移動。

分支 - 現在我們只是在源代碼管理中有一個主幹。我想我們希望在準備發佈時分支樹幹,並更新分支以查找QA中發現的錯誤。當構建準備好釋放時,將分支變化合並回樹幹。

以下是我計劃設置TFS的方法。

+Apps 
    +App1 
     +Components 
      +Core 
      +Web 
     +Branches 
    +App2 
     +Components 
      +Core 
      +Web 
     +Branches 
    +Libraries 
     +Lib1 
     +Lib2 
     +Branches 

考慮如何管理POM中的所有POM和版本似乎太困難了。我已經閱讀了Maven發佈插件,但我不確定它是否可以按我想我們想要的方式進行分支。

下一個問題是團隊合作的問題。我正在考慮爲每個應用程序開發3個teamcity項目。一個始終指向中繼的開發項目,一個用於測試QA構建的QA項目和一個爲修補程序構建更改的生產項目。每次新版本發佈到QA時,我都必須更新QA teamcity項目,以指向新版本分支並更新teamcity中的發佈版本號。當該版本通過QA時,我必須更新生產teamcity項目,以指出剛剛通過QA的分支並將構建編號更新爲剛剛通過QA的內部版本編號。

當然有更好的策略。

問題

應該在哪裏我可以把這些分支文件夾?

質量保證是否應該成爲快照,直到構建進入預生產階段?

如何在不更改每個發行版的源路徑的情況下配置teamcity來獲取這些分支?

是否應爲每個開發人員使用,以確保所有的依賴被編譯的和最新的應用程序父POM的?

+0

看看我的帖子關於TFS分支策略。它可能有助於回答你的部分問題。 http://stackoverflow.com/questions/5720661/tfs-2010-branch-across-team-projects-best-practices/6444910#6444910 – Daniel

回答

0

我只想問你的思想,你的應用程序應該在不同的發佈週期。模塊化對於代碼質量是一件好事,但如果您的模塊處於單獨的發佈週期,則會引入大量開銷。特別是,版本管理變得非常重要,如果你弄錯了,你可以引入運行時錯誤。

這些獨立的應用程序如何相互關聯?它們之間是否存在依賴關係(可能通過共享庫)?他們是否相互溝通?他們部署在一起嗎?

如果它不是必要他們在不同的發佈週期,那麼你可能最好把它們放在一起。