TFS 2010 的自動化建置 (Team Build) 讓所有 Assambly 自動依序跳號
TechDay 2011 的課程有一堂是
高品質軟體的基礎 - 持續整合的應用 Continuous Integration
其中最後一段是講到 Team Build 如何可以自動「依序」跳號
並且可以自行決定啟始版號
因為當時在 TechDay 課程塞了很多東西
想說讓大家知道 Team Build 可以做到類似的效果,日後再轉成文章
沒想到一轉眼半年就過去了! (汗)
這篇文章主要是參考 Jeremy Jameson 的 Blog 來的
只要花 一、兩天基本上就可以很快上手
本來我有把所有操作的過程全部抓下來
但之前更換電腦時忘了把 Blog 草稿一併備份
整個就是杯具呀 ( 遠目 )
所以還是要麻煩自已看英文原稿了
=========== 主要需求 ================
當時是因為 G 公司他們有核心的研發團隊,要定期交付版本
並且需要由建置人員決定當時的版號來依序跳號
不想要用預設的方式產生,但也不想要開發人員一個一個修改
所以要統一透過 Team Build 一併完成
除了自動建置可以跳號外,也必須支援手動建置時同相同的編號依序跳號
基本上一般的團隊會比較建議用 VS 內建的自動跳號就可以
因為 .NET Framework 所有的元件都是如此
若是有其他開發考量,那麼就需要調整一下建置流程和做法
============= 自動跳號建置的結果 ======================
第一次建置結果
第二次建置結果
可以看到 Build Number 已經依序跳了一個號碼
接下來大致上說明一下比較重要的地方
======= Build Template 建置腳本 =======
這裡是用 DefaultTemplate.xaml 複製一份修改而成的
這裡是用 IncrementVersionTemplate.xaml 為主,記得修改好後要再放回到版控中。
不然會找不到建置腳本
詳細內容
有關於文章中講到的變數、引數在下方要點選後就會開啟了!
其他的只要照著做就沒有太大的問題
若是想要知道 Build Work flow 的 Active
可以參考
Team Foundation Build 活動 ( 全中文 )
http://msdn.microsoft.com/zh-tw/library/gg265783.aspx
======= 處理自動跳號 ==========
這個動作並不是由 Team Build 來執行的,而是在 代理主機的透過 MSBuild 執行
在 Update Build Number 的 active
其中 Incremant AssmblyVersion for next build 是 MSBuild Active
MSBuild 的腳本其實就是大家非常熟悉的 Proj 檔
自從 Team Foundation Server 推出後
Proj 檔就全面改成了 MSBuild 腳本了
這對於 .NET 的開發團隊來說是非常方便的點
完全不用自已去寫
MSBuild 腳本內容
若是熟悉 Java Ant 或是 Maven 的朋友就會發現,根本就是一樣的東西嘛 XD
為什麼會自動依序跳號?那是因為透過 MSBuild Extension Pack 的套件 Version 達成的。
腳本很單純
比較特別的是因為 txt 也是在版控中,所以需要透過 Exec 指令進行簽出、入的動作
註:同理若是想要做「自動化佈署」到指定的機器也是同樣的概念來處理的
就不用擔心說每個專案都要編輯 Build Teamplate 檔了
======= 準備 ShredAssemblyInfo.cs =======
在 VS 中為了可以讓多個 DLL 共用同一個 編號是透過 Shared 的機制
在 CoreServices 專案中 AssemblyVersionInfo 是用 「Link」的方式
真正的檔案都在 Solution Items 中
有興趣的可以參考
http://blogs.msdn.com/b/jjameson/archive/2009/04/03/shared-assembly-info-in-visual-studio-projects.aspx
======= MS Build Extension Pack =======
TFS Team Build Server 必須安裝此外掛套件
http://msbuildextensionpack.codeplex.com/
=================================
希望可以透過以上的資訊,讓團隊可以更快地了解 Team Build 是怎麼做的
日後團隊才有辦法做更進階的事情
像是 建置後自動合併 分支、建置後自動佈署到指定機器
尤其是 金融業 都很需要這樣子的機制呢!
參考書籍
Inside the Microsoft® Build Engine, 2nd Edition
Using MSBuild and Team Foundation Build
http://shop.oreilly.com/product/0790145301949.do
參考資料
Team Foundation Build 活動
http://msdn.microsoft.com/zh-tw/library/gg265783.aspx
Incrementing the Assembly Version for Each Build
Incrementing the Assembly Version for Each Build in TFS 2010
Best Practices for .NET Assembly Versioning
http://blogs.msdn.com/b/jjameson/archive/2009/04/03/best-practices-for-net-assembly-versioning.aspx
Shared Assembly Info in Visual Studio Projects
自訂 SolutionToBuild 項目群組
http://msdn.microsoft.com/zh-tw/library/bb399127.aspx
How to: Create an Automated Build and Deployment Solution with Team Foundation Server Team Build