2009-07-10 245 views
1

我準備搬過來從VSS我的團隊的源代碼控制TFS 2008TFS構建架構

這是一個asp.net網站,我目前使用楠腳本和巡航控制系統的組合做所有的構建和部署。

我一直在試圖圍繞構建TFS構建的最佳方式來完成與NANT和Cruise Control做同樣的事情,但我無法確定最佳方法。

這裏是我的要求:

  1. 當代碼達到某個點時,我手動標籤適用於它。
  2. 這個帶標籤的代碼需要構建並部署到我們25個不同的Dev,QA或生產環境中的任何一個。
  3. 這25個環境中的任何一個都可以位於應用程序的任何當前或過去的標籤版本上。
  4. 我需要能夠將任何標記版本的應用程序部署到任何環境。

我目前正在完成上述使用NANT來執行構建,並使用巡航控制只傳遞命令行選項爲其構建和部署的環境。我有一個Nant配置文件,其中包含我所有環境的列表以及每個環境當前應該使用的相關標籤。無論何時創建新標籤,都會手動更新此文件。

我知道我用於NANT的方法可能不會與Team Build相同,但是任何人都可以與Team Build做類似的事情,並且可以分享如何實現它?

回答

0

要回答這個問題,我解決這個問題的方法是使用自定義構建任務,巡航控制和msbuild的組合。

自定義構建任務允許我從特定分支和標籤獲取最新版本。

巡航控制允許我使用配置文件將特定構建的特定信息傳遞給MSbuild,但是從UI啓動構建。

msbuild與普通的一樣使用,但是它被巡航控制系統調用,自定義構建任務完成了大部分工作。

2
  1. TFS中的標籤比VSS中的標籤更加健壯。當您創建標籤時,您可以根據變更集,日期,工作區版本創建,甚至可以使用不同的標籤。 (順便說一句,我是抓住一個環節和整個this post來,你可能會發現相關的。)

  2. 默認情況下,團隊建設將建立從源代碼的最新版本,但是你可以重寫「CoreGet」目標在構建中構建特定版本。 Aaron Hallberg(又名TFS的John Skeet)展示了一個例子here

  3. 看到4

  4. 我沒有親自過這種困難的要求,但我做了類似的事情。在構建隊列時,可以通過幾種重要方式傳遞任意數量的參數,1)通過響應文件和2)在隊列時間(simple example here)。無論哪種情況,兩個參數可以是哪個環境以及哪個標籤/版本號。在我當前的項目中,我已經開啓了持續集成,所以當工作區中的代碼簽入時,當前代碼會自動標記,從響應文件中提取放置位置的細節,然後部署到相應的位置。

鑑於你有〜25度的環境和N個版本/標籤的數量,你可以建立一個簡單的圖形用戶界面,通過TFS API讀取當前的標籤,讓你選擇建立一個特定的環境下哪個版本。