2012-09-11 19 views
4

除了不斷構建版本/功能分支外,我幾乎在Team City中設置了幾乎所有設置。用於TFS功能分支的TeamCity CI構建

這將很難形容,但希望它是有道理的。

我在TFS下面的源控制佈局:

$/ProjectName/releases/1.2 
$/ProjectName/features/create-doodads 
$/ProjectName/trunk 

我有以下構建參數:

env.SourceBranch = trunk 

這被用於配置源控制根:

Root = $/ProjectName 
CheckoutRule = +:%env.SourceBranch%=>./ 

以下是有趣的地方:

當我運行定製版本並手動指定env.SourceBranch時,構建將與指定的分支一起運行,因爲它是在「結帳規則」中配置的。隨着7.1版本的新功能在項目頁面的內部版本號旁邊顯示分支標籤,這些內容將正確顯示在構建版本和構建鏈中的所有後續版本旁邊。

不過,當我再次登入分支時,它不會自動運行。

我明白爲什麼會這樣......結賬規則默認爲trunk這意味着它不匹配releasesfeatures下發生的任何簽入,但我不完全相信我的選擇是。

我想我想要的是指定構建觸發器的能力,該構建觸發器設置傳遞給vcs根的參數......或類似的東西。

任何幫助將不勝感激,讓我知道如果這不明確,我會嘗試進一步解釋。

編輯:

我試圖與退房遵守遊戲規則,做這樣的事情:

+:trunk=>./ 
+:releases/*=>./ 
+:features/*=>./ 

可惜,這是行不通的。

看來我想要做的是什麼suggested here,這讓我覺得這是不可能的。

回答

0

我想你所描述的只是試圖從不同的分支機構基於觸發器自動構建(類似於git的工作方式)。不幸的是,在撰寫本文時,這不是在分佈式模型(如git和mercurial)之外的源代碼控制的一種選擇,我知道。

我建議根據模板創建不同的構建配置,每個使用構建參數中指定的不同分支。我想如果你遵循CI促銷模式,這將是最有幫助和容易追蹤的。因此,在您的示例中您將擁有三個構建配置,並且有一個模板,除了一個參數外,所有三個構建中的所有內容完全相同:%env.SourceBranch%。