CIO
|
PCDIY!
|
旗標圖書
|
旗景數位影像
|
讀者服務
首 頁
即時新聞
業界動態
最新活動
企業採購
精選文章
線上教學
品牌活動
程式碼下載
雲端運算智庫
最近新增的
精選文章
AP內建AI引擎 Mist Cloud平台分析能力強 Juniper Mist AI領先全球 改善WiFi穩定、效能首選
解決IT供應鏈攻擊
內部威脅的七個警訊
遠百以專案辦公室推動數位體驗
多廠牌與多重電信業者網路架構的挑戰與機會
德明科大啟用電貿暨AI實習基地 ViewSonic ViewBoard 智慧互動電子白板 扮要角
淺談計算誤差
秀傳醫療體系統 以Lenovo HyperConverged HX 超融合架構扎穩智慧醫療發展基礎
模組化設計 偵測率達99.99% 全面防杜惡意郵件入侵 首選Cellopoint Email UTM
滿足網路管理與檔案安全傳輸需求,Ipswitch的MOVEit及WhatsUp Gold一次完整提供
來自學界的資料分析利器 - Weka 與 R
北醫建置肺癌資料庫,透過深度標註訓練AI,協助醫師早期發現癌症
北榮AI門診上路!人工智慧判讀腦瘤,有效縮短醫師確診時間
台灣智慧機器人玩具聯盟攜手英閱音躍研創 推廣T. Robot程式教育,協助國中小學扎根培養運算思維
一場與時間賽跑的戰役 ,人工智慧加速心血管疾病診斷
最多人點閱的
精選文章
免費IT建置--Linux系統操作與管理
免費IT建置--網頁伺服器的完美組合LAMP(下)
初探Hadoop開放原始碼平台環境
Linux下的防火牆(基礎篇)
免費IT建置--檔案共享與檔案伺服器
Linux下的防火牆(進階篇)
N.Y.BAGELS CAFE善用SAP Business One
手機程式設計入門與應用 Android、iPhone、Windows Mobile─ 影片播放器範例
手機程式設計入門與應用 Android、iPhone、Windows Mobile─ 線上查詢匯率
手機程式設計入門與應用 Android、iPhone、Windows Mobile─ 擲骰子遊戲
手機程式設計入門與應用 Android、iPhone、Windows Mobile─ 音樂播放器範例
手機程式設計入門與應用 Android、iPhone、Windows Mobile─ 來電黑名單
免費IT建置--網頁伺服器的完美組合LAMP(上)
手機程式設計入門與應用 Android、iPhone、Windows Mobile─ 繪圖板範例
手機程式設計入門與應用 Android、iPhone、Windows Mobile─ Matrix應用範例
精選文章 - 網管資安
分享到Plurk
分享到FaceBook
開發團隊的最佳第六人:TFS自動組建與組態管理員
文/蔡竣富
2016/9/7 下午 05:17:46
對於專案軟體開發而言,除了時程的掌握,最重要的就是軟體開發的程式碼產出及版本管理,Team Foundation Server是微軟所開發的版本控管工具,除了能夠自由簽入簽出和紀錄查詢等基本版控功能外,還有離線支援、物件項目整合、擱置集等額外功能,若能充分有效利用TFS的自動組建、部署的能力,無形中等於開發團隊額外多了一個人手,不但程式碼品質可以有所改善,同時也能夠提高開發效率,Work smart don't work hard !!
Microsoft Team Foundation Server 2015是微軟新推出的應用程式開發週期管理 (ALM) 解決方案的核心共同作業平台,擺脫傳統TFS 2010的操作模式,使用全新Web頁面進行瀏覽及控制設定(圖一),不僅提供人性化的操作,也支援Azure相關的資源建置,還可直接在網路上進行版本控管,可讓所有在集合裡的使用者看到任何版控或是建置訊息,提升開發團隊彼此間的合作默契。
▲ (圖一)
自動建置:讓TFS成為最佳第六人
當開發團隊有許多人一同進行專案開發時,因為人為的錯誤發生建置失敗的情況屢見不鮮,往往會浪費許多時間及人力進行建置問題的處理,對於開發的效率影響是不利的,我們可以利用TFS建立自動化建置的機制,提升整體的工作效率,以下為逐步的說明。
首先必須在Team Foundation Server 2015的伺服器上開啟XAML組件組態服務並安裝(圖二)。
▲ (圖二)
在進行XAML組件服務組態精靈安裝的過程中,必須選取要設定組建服務的Team專案集合,而在建立的過程中若之前在舊的Team Foundation Server 2010已經有建立過組建服務的話,會詢問是否還原先前的狀態還是使用現有新的資源(圖三),開發團隊可自行決定要延用舊有設定或是重新設定新的建置組態。
▲ (圖三)
在安裝完XAML組建服務組態後,就可以開始建立自動建置的組態,首先開啟Visual Studio 2015開發工具並連接Team Foundation Server 2015,在檢視的工具列中選擇Team Explorer,在Team Explorer首頁中選擇組建項目,可以看到組建的相關資訊,這時候在XAML組態定義的項目中按下新增組建定義,就可以開始建立自己的組建了(圖四)。
▲ (圖四)
在命名完組建定義名稱後,接著開始設定自動建置的觸發程序,其觸發程序共有五個選項(圖五),觸發程序的差異如下:
▲ (圖五)
1.手動-簽入不會觸發新組建:此選項並不會進行任何的組建觸發,必須靠使用者手動將建置排入佇列後,才會觸發該程序。
2.連續整合-建置每次簽入:每次修改程式,只要簽入變更時便自動將組建排入佇列,好處是每次簽入就能知道建置成功或失敗,並且知道是哪位開發者遷入所導致,能夠快速修正錯誤。但若開發團隊有許多開發者,不建議使用此選項,因為容易發生版本程式錯誤尚未修改,並且持續簽入檔案、持續觸發建置,造成程式版本不完全。
3.正在復原建置-累積簽入,直到前一次組建完成:若遷入的檔案是由組建定義建置,當遷入變更時會有限制的將此組建排入佇列,其限制是指當組建定義的流程已經在執行時,不會將新的組建排入佇列。
4.閘道簽入-只有在順利合併並建置提交的變更時,才會接受簽入:將組建做為版控的簽入檔案的品質管制,避免簽入會編譯失敗的程式碼,當開發人員簽入檔案時,該變更集會形成擱置集,建置伺服器會先與版控合併後再進行建置,若建置成功,則自動將擱置集簽入,反之則依然存放在擱置集。
5.排程-每周於下列日子建置:自行建立組建排程,選擇要執行組建的星期與時間即可,建議小型開發團隊可使用此組建,於每段時間進行建置,方便了解現有版控是否有誤。
觸發程序的選擇會根據團隊的開發模式有所不同,若團隊常常進行版本的簽入簽出,並不建議使用連續整合,因為持續的啟動建置程序會造成Build Server的負擔,可選擇手動觸發或是排程觸發來進行,而排程觸發的優點是可以選擇日期及時間來進行,方便假日期間進行專案版本的檢查。
選定觸發程序後,接著進行來源設定(圖六),在來源設定中可以看到兩個選取資料夾,一個是原始檔控制資料夾,這邊選擇要執行自動建置方案所對應到的TFS工作區,而組建代理程式資料夾則是組建進行建置輸出對應的資料夾。
▲ (圖六)
要特別注意的是,組建代理程式資料夾指的是在Team Foundation Server機器上的資料夾,並非使用者自己所使用的本機資料夾,若選擇錯誤的話,在進行自動建置時,會發生組建錯誤的情況(圖七)。
▲ (圖七)
來源設定完成之後,便開始選擇組建預設值(圖八),在組建控制器中可以選擇要執行建置的控制器,必須注意該控制器是否為離線,若顯示離線必須在Team Foundation Server中開啟該控制器,選擇完組建控制器後再設定預設環境位置,若選擇『這個組建不會將輸出檔案複製到置放資料夾』的選項,則建置成功時並不會輸出檔案複製,若選擇『將組建輸出複製到下列置放資料夾』時,一旦建置成功時,則檔案會複製到使用者輸入的路徑下,此功能適合用來進行開發機的測試,當程式簽入後進行自動建置,若正確無誤便將檔案複製到對應的測試機資料夾中,可以馬上進行功能測試。
▲ (圖八)
最後一個步驟為流程設定(圖九),使用者可以選擇要建置的專案和組態,我們可以自行編譯組建的編號格式,通常是專案名稱加上年月日及版本號,其原因是避免輸出編號格式相同,若輸出編號格式相同,自動建置會發生錯誤。
▲ (圖九)
當組建設定完成後,便可開始執行自動建置的組建觸發,組建觸發後便會開始執行上面所設定的組建流程,當組建執行成功後會顯示建置已成功(圖十),並且顯示摘要訊息,如簽入的使用者、相關版號和時間等資訊,一切全部都自動化了,是不是省卻了許多力人呢?我們又朝美好的世界邁進了一小步!
▲ (圖十)
環境組態小幫手:組態管理員
組態管理員是一種非常好用的方案管理工具,很多時候我們在進行開發時會因為環境的不同,像是開發、測試、上線等環境,不同的環境就必須修改不同的參數與設定,不僅程序繁雜、修改費時,萬一忘記修改很容易造成環境參數錯誤,導致系統異常。這時候就可以使用組態管理員的方案組態快速進行切換,以達成我們的目的。
在Visual Studio 2015軟體開發工具中的功能列上方,可以看見現有方案及專案的組態(圖十一),若沒有進行新增或修改通常都是兩種組態,分別是Debug和Release兩種。
一般Debug通常都是進行測試開發時所使用的編譯組建,在編譯組建時並不會對組建最佳化,而使用Debug的好處是可自行在Debug的模式下進行程式測試,在開發的程式中加上#if DEBUG的語法,如此一來當選擇在Debug模式下執行程式作業時,系統會判別是否為Debug模式,進入#if DEBUG語法的判斷條件;而Release則是在編譯組件時會對組建最佳化,並且忽略#if DEBUG的判斷。
▲ (圖十一)
除了Debug及Release兩種組態之外,我們也可以自行新增想要編輯的組態,在組態管理員的「使用中的方案組態」選項中選取「新增」(圖十二),命名該組態的名稱後並選擇「複製設定值來源」,確定後就會建立新的方案組態。
▲ (圖十二)
建立完新的方案組態後之後,到專案中的Web.Config檔案(圖十三),按下右鍵選擇『新增設定轉換』選項後,Web.Config底下會自動新增剛剛所建立的組態的Config檔案。
▲ (圖十三)
接著我們可以在該Web.Config檔案進行編輯,比照現有的Web.Config看有哪些是需要做修正的,一般來說通常都是DB的連線字串需要進行修改,像是上線機與測試機的DB和使用者就不會一樣,常常在發行上版時都要修改Web.Config的參數,除了容易忘記修改之外,有時還會不小心改錯,造成系統出現問題。
為了避免這些問題的發生,我們可以在新增的組建Web.Config中加入Transform語法,利用Transform與Locator兩種屬性來進行Web.Config的編輯,以DB的ConnectionStrings來說,我們在Test組態的Config加入現有Web.Config中有的ConnectionStrings(圖十四),並修改Data Source的連線位置和使用者名稱,最後加入Transform和Locator的屬性及相關參數即可。
▲ (圖十四)
修改完自定義的Web.Config後,可以利用Visual Studio 2015的預覽和轉換功能來比較使用該組態後的Web.Config是否變更為自行設定的參數(圖十五),可以利用此功能來進行檢查。
▲ (圖十五)
從結果(圖十六)可以看到我們在Test組態所設定的DB連線取代了現有Web.Config的DB連線字串。
▲ (圖十六)
當然除了可以修改ConnectionStrings外,若專案是呼叫WCF的服務,也可以在這邊進行參數和路徑修改(圖十七),還可以隨著環境不同而新增WCF服務端點,將Transform屬性改為Insert就可以新增,若沒指定Insert之後的位置,通常會加到最後一列,其結果如圖十八。
▲ (圖十七)
▲ (圖十八)
除了Web.Config之外,若開發團隊有引用其他的App.Config,也可以做到上述的組態參數設定,但是必須先到Visual Studio的『擴充功能和更新』下載SlowCheetah –XML Transforms(圖十九)並安裝。
▲ (圖十九)
安裝完之後,可以發現在自行新增的Config檔案中,出現了Add Transform的功能選項(圖二十),按下去之後可以看到相關的組態Config檔案都出現了,因此可以重複上面敘述過的方法,利用Web.Config的Transform語法進行相同的參數設定。
▲ (圖二十)
如此一來開發團隊在進行版本發佈時,就不需要隨著環境的不同而修改對應的Config路徑檔,只要選擇正確的環境組態,即可進行環境佈署。
結論
現在軟體開發講求的是團隊合作和高效率,所以如何讓開發團隊的成員在專心的開發軟體,而不被一些建置失敗等旁枝末節的問題所干擾。利用TFS自動建置的功能,能夠在檔案簽入時馬上發現到錯誤並加以修正,自動的整合組建,可以隨時發現團隊成員時簽入程式碼的異常,還能將組建完的軟體利用組態管理員機制,發佈正確的參數檔案至開發或測試環境,QA人員可以直接進行測試。
在工業4.0的時代,凡事追求生產效率和自動化,軟體工業不也應該要朝向這樣的方向齊步邁進?(本文由凌群電腦提供,作者現服務於凌羣電腦軟體生產力促進處)
參考資料
Microsoft : https://www.microsoft.com/zh-tw/
Visual Studio MSDN :https://msdn.microsoft.com/zh-tw/vstudio/aa718325.aspx
資策會:http://www.iii.org.tw/Default.aspx
http://kevintsengtw.blogspot.tw/2014/08/webconfig.html#.U-MWfPmSwZk
https://dotblogs.com.tw/yc421206/archive/2010/12/06/19944.aspx
https://dotblogs.com.tw/terrychuang/2011/11/11/56958
回首頁...
關於RUN!PC
|
廣告刊登
|
聯絡我們
|
讀者服務
|
雜誌訂閱
|
出刊&補寄時間
-- Copyright© FLAG INFORMATION CO., LTD. 旗訊科技(股)公司. All rights reserved. 本站圖文著作權所有 未經授權 不得任意轉載使用 --
-- 請使用1024*768螢幕解析度,IE 7.0或firefox 3.0以上瀏覽器,以達到最佳閱讀效果--