第191期 / September 5, 2013

研發新視界

分享到臉書!分享到維特!分享到噗浪!分享到Google+!分享到微博!轉寄友人友善列印

Team Foundation Service介紹

作者/陳立人

[發表日期:2013/9/5]

前言

在開發系統專案時,由於專案團隊不一定都會處於同一地區,大部分的時間都會分散於不同的地點,如何協同專案成員的能力使得此專案的系統品質更完善以及確保原始碼版本不會由於專案成員在同一時間修改同一支程式時,因為互相覆蓋而造成原始碼付諸流水,這些問題都是執行專案時需要仔細探討的課題。因此開發專案時若有一套完善的管理原始碼機制以及讓專案成員間互相給予程式碼的評語機制,將會使得開發專案更迅速、開發出來的系統品質也會更完善。

Microsoft所推出的Team Foundation Service (TFService)即是為了上述的目的而發展出來的一個工具。它是一個端對端且以雲端為基礎的 ALM 解決方案,可管理從版本控制、程式碼檢閱到敏捷規劃及自動化組建的所有事項。TFService可用來跨越私有的網路,達到不同地點都可以輕易存取程式與管理開發流程。它具有下列特點:

‧可以在任何地方、任何時間進行存取。
‧可支援各種不同的開發平台以及環境。
‧由於所有的原始碼皆存於雲端上,故不需要再自行準備一台機器來架設TFS Server,也不需為了繁複的安裝與組態設定而煩惱。

目前TFService的方案Microsoft官方網站只有提供免費方案,要付費的方案目前Microsoft尚未提供。免費方案即是免付費,提供5人以下團隊來使用,且沒有專案數量的限制,除了基本的版本控管之外,也提供了 Work Item 的追蹤記錄功能。TFService其實就是Team Foundation Server(TFS)的雲端版本,但由於TFService為雲端服務,故它用來辨識每個專案成員的依據為註冊Microsoft的Windows Live ID,但TFServer則是利用Windows的登入使用者帳號來辨識。再者由於目前微軟只提供了TFService的Free Plan,故目前只適合小於5人以下的專案開發團隊,但若未來付費專案推出,可能專案人數就較無限制了。除此之外,若需使用TFServer時,必須架設及安裝Server,為了安全性的考量,通常會把此Server設定為同一網域的人才可使用,因此專案成員無法跨越網域來使用,而由於TFService是一種雲端服務,故安全性的部分Microsoft便會幫忙把關,只需要利用Windows Live ID登入即可,因此較不易受到地域的限制,達到跨越網域的境界。

總結上述,下表為TFService(Free Plan)與TFS的簡單比較。


《圖一》


透過上表的比較,可以清楚了解其適用的情境:若所執行的專案是一個大型專案,需要一個為數眾多的大型開發團隊來開發時,建議還是安裝TFServer會比較好,這樣可以用公司內部的帳號來整合原始碼並進行專案流程的管控。但如果只是一個需要5人以下的小專案或是時間緊迫的專案,與其花費時間在安裝與設定TFServer上,不如將重點擺在開發專案上,這時不如考慮使用TFService,免去繁複的安裝TFServer的程序。

註冊TFService

可以適用TFService的IDE為Visual Studio 2012、Visual Studio 2010(但需更新為SP1),除了Visual Studio之外,TFService也支援Eclipse與XCode的開發工具。申請使用TFService時,前提是要有一組Windows Live ID用來申請TFService的服務。首先我們需要至Microsoft註冊TFService (http://tfs.visualstudio.com/),進入點選「Sign up for free」選項。


《圖二》


建立帳號的畫面如下,在Account URL欄位中輸入你想要使用的名稱,這個Url將會是未來專案團隊可以用來存取TFService的網路位址,建議可以選擇與專案開發團隊相關的名稱。按下「Create Account」後即開始建立TFService的服務。要注意的是,Microsoft目前只提供每個帳號只能夠註冊一個TFService的雲端服務。


《圖三》


建立新專案

輸入自訂的Account URL後,即完成建立TFService服務並會將頁面自動導向個人TFService服務入口網頁。之後若想要直接連至TFService的服務,直接在網址列上輸入 https://[your account].visualstudio.com即可登入。登入後按下「New team project」,開始建立新的開發專案。


《圖四》


在「Project name」定義符合專案的專案名稱,「Process template」中定義的是要何種方式來管理專案的開發,預設選項為Scrum,即是將專案中的各個需求排定優先順序,優先順序高的先進行開發,等開發完成並交由使用者測試後,再開發優先順序次高的需求,詳細介紹建議可至http://blog.sanc.idv.tw/2011/11/scrum.html 查看。

若需要其他專案管理方法,Microsoft也提供了Agile與CMMI的選項。「Version Control」則用預設的Team Foundation Version Control即可,輸入完專案相關資料後,按下「Create Project」即開始建立專案。專案建立完成後會出現完成建立的畫面,點選Navigate to project就可以進入Project的管理頁。


《圖五》


設定TFService

開啟Visual Studio,選擇「小組」→「連接到Team Foundation Server」


《圖六》


點選「伺服器」(若之前完全沒有加入過TFS,則此頁面則是空的) →「加入」→輸入在建立帳號時設定的「Account Url」,舉我們註冊的Url為例,即是輸入https://testtfservice.visualstudio.com,按下確定後,就會自動跳出Mirosoft帳戶登入的視窗,登入的帳號密碼為Windows Live ID以及對應的密碼。因此專案中的每個成員都必須要註冊Microsoft的帳號,這個帳號即為TFService中用來辨識是哪個使用者上傳程式碼的唯一識別ID。


《圖七》


若出現下錯誤,請啟用瀏覽器的JavaScript,舉IE瀏覽器的設定為例:


《圖八》


啟用方式如下,「網際網路選項」→「安全性」→點選「網際網路」→「自訂等級」,尋找「指令碼處理」的選項 → 將「Active scripting」設定為『啟用』,設定完後即可正常登入以加入TFService,加入後可以看到「Team專案」裡會列出剛剛在TFService網頁上所建立的專案 →點選「連接」,即可開始使用TFService來做原始碼的版本控制了。


《圖九》


使用TFService做版本控管

利用TFService做版本控管的操作方式與TFServer大同小異,簡單說明如下:

點選「Team總管」下的「原始檔控制」開啟「原始檔控制總管」的視窗。由於做版本控制時,需要在本機建立一個目錄用來保存TFService的原始碼,當要對原始碼進行修改時,就可以根據此目錄中的原始碼直接進行修改了,並且能夠保留開發者(專案成員)目前對程式碼所做的變更。以下就此流程的操作搭配操作畫面做簡單說明。對專案點選右鍵 →「取得最新的版本」,輸入「本機資料夾」,這個部分是用來設定從TFService上下載的檔案會對應到的本機目錄,接著點選「對應」,就會根據「本機資料夾」中所輸入的目錄,自動在本機創建一個資料夾來放置TFService的程式碼。


《圖十》


當TFService成員想要將新寫的程式碼加入至TFService時,對專案點選右鍵 →點選「將項目加入到資料夾」。選擇欲上傳的程式碼所在目錄,本例是將開發的程式碼與TFService的本機資料夾放於同一目錄,這樣做的原因是將同一專案的程式碼歸類於同一目錄較容易管理,且若需要取得TFService的最新版時,也能夠較容易與本機的程式碼同步。選完後點選「完成」,可以從原始檔控制總管中看到新加入的程式碼前面有出現「 」,但這時只是暫時將程式碼加入至原始檔控制中,尚未將原始碼上傳至TFService,還需要將程式碼做「簽入」(即是再次確認要上傳的原始碼是否正確)的動作,才會上傳至TFService。「簽入」時請記得填寫註解,以利後續作原始碼的版本控制時,了解為何上傳此程式碼的原因。

TFService的成員若需要對A程式做修改,必需先取得此程式的最新版本後再修改,修改時TFService便會自動將A程式簽出 (暫止的變更會顯式編輯狀態,如下圖)並鎖定,直到此成員簽入為止,其他成員才能夠修改A程式,以解決同時修改造成程式版本不一致的問題。


《圖十一》


TFService的網頁介面

TFService提供了一個原始碼控制的網頁介面,讓我們能夠更方便的管理專案中的原始碼,它也提供了對程式碼給與「評語」的機制,讓TFService的成員可以互相交流,使得原始碼的品質可以更加完善。除此之外,由於目前智慧型手機的發達,透過網頁的形式也可以讓專案成員直接在手機上做程式碼比對、給評語並且隨時隨地的掌握專案的進度。以下將說明如何利用此介面來管理專案。

開啟瀏覽器在網址列上輸入註冊的Account Url,即可進入TFService的管理介面,選擇「CODE」後,可在左邊的選單中看到簽入的程式碼。點選目錄後,可以看到簽入記錄、日期、簽入者以及簽入者所寫的「Comments」,移至欲查看的「Comments」時,會出現此變更的變更集代碼。


《圖十二》


點選想要查看的程式碼的「Comments」,可以看到此程式最新修改版本與上一次修改版本的程式比對,可以快速的檢查程式碼的修正正確性。


《圖十三》


對於想要查看的目錄點選右鍵,再點選「View history」,可以看到所有對於這專案中的原始碼的變更有哪些。若覺得這樣搜尋的範圍太大,也可以點選畫面右上角的「Advance Search」,選擇想查看的修改原始碼的成員名稱或是輸入修改的時間區間以縮小查看的變更集範圍,更快速的找尋想要查看的原始碼變更。


《圖十四》


從程式碼比對中,可以看到A成員修改的部分,但有時B成員認為此段修改部分應該會有更好的寫法。因此對於程式碼中有瑕疵的部分,可以利用TFService的給予「Comment」的機制,對於想要給予建議的程式碼區段,A成員可移至此程式的區段部分,可以看到左邊有個「」符號,點選後即會看到程式碼下方會出現一個給予Comment的輸入欄位,輸入完建議後按下Enter即完成。


《圖十五》


當A成員進入查看自己所修改的程式碼時,會發現B成員給他的建議,評估後便著手進行修改,將原本為Button1 改成Build Star Tower,讓使用者能夠更了解此按鈕的意義為何。透過這樣的「評語機制」,也使得系統的品質因此提升。


《圖十六》


設定原始碼自動每日建置

專案進行時,往往都會將開發好的程式做建置的動作,在統一放置再測試主機,進行整合測試的動作。若可以將這個建置的動作,設成自動建置,這樣不但可以省下等待建置的時間,也可以提早發覺無法建置成功的原因。下面我們將介紹如何設定自動建置。開啟Visual Studio的「Team總管」,點開想要自動建置的專案,接著點開「組建」。在「所有組建定義」的選項上點選右建,選擇「新增組建定義」。接著在「一般」的頁面上輸入自訂的「組建定義名稱」。


《圖十七》


觸發程序的設定則是根據專案的需求,連續整合指的是每當有專案成員修改定義的專案中(在「流程」頁面中設定)的原始碼時,TFService就會自動建置Object。排程顧名思義,就是設定每個禮拜的哪個時間點要建置Object。詳細的介紹可參考http://www.runpc.com.tw/content/content.aspx?id=109438


《圖十八》


「工作區」的設定則是設定準備要建置的原始碼位於哪個目錄以及欲將產生的Object放至TFService哪個目錄下。由於本例是將自動建置出的Object放置在TFService上,所以需要設定一個專門放置建置完成的Object的目錄(目錄的設定須在「組建預設值」頁面設定),要注意的是,放置Object的目錄「狀態」須設定成「已隱匿」,否則建置時會出現錯誤。


《圖十九》


建置時的主要設定皆在流程建置中,這邊最主要要設定是下列2項,「要建置的項目」是設定此組建定義是要對TFService上的哪個專案做自動建置。每當組建完成時,相關的Object都會放置在一個新產生的目錄下,「組建編號格式」即是用來設定此新產生的目錄名稱規則,設定完成後即會依照設定值開始自動建置。


《圖二十》


每日自動建置的結果可以直接進入TFService的網頁介面,點選BUILD後,即可看到上述步驟所設定的組建定義,在畫面的右上角會顯示一個長條圖,此長條圖根據時間由小到大從左到右依序排列,綠色長條代表的是組建成功,紅色長條代表的是組建失敗,圖形高度代表的則是此次組建所花費的時間。長條圖中的每一個長條代表的是當次組建的詳細資訊。


《圖二十一》


點選想要查看的組建長條,若建置時發生錯誤,「Summary」會列出此次組建時發生的錯誤以及警告,可以了解為何這次建置會失敗,如下圖所示。若想要進一步了解建置時錯誤的詳細資訊,可以點選「Diagnostics」,查看組建時的逐步步驟、輸入屬性的設定以及輸出的結果為何,透過這樣的診斷,我們也能夠更快了解建置時發生的錯誤在哪邊,更快的解決此問題。若想要取得組建完成的Object,可點選左上角的「Open drop folder」,並對想要取得的Object,點選「Download」即可。


《圖二十二》


總結

本文介紹Team Foundation Service,並且比較了TFService與TFServer的適用範圍以及優缺點,並且說明TFservice如何搭配Visual Studio,讓專案團隊成員能夠在不同時間、地點協同合作完成專案,並大略介紹了自動化組建讓Object能定期產生,透過這樣的組建機制能夠提早發現專案中的錯誤並且及時調整修正。Team Foundation Service不只可用來做原始碼版本控管及自動化組建,它更可以當作是專案管理的工具,希望本文提供了對於Team Foundation Service的基本認知,作為進一步學習此工具的跳板。

參考資料

1.Team Foundation Service的使用教學
 http://ppt.cc/U0rY
 http://ppt.cc/2jOL

2.自動化建置設定教學
 http://www.runpc.com.tw/content/content.aspx?id=109438

3.Team Foundation Service的官方網頁
 http://tfs.visualstudio.com/en-us/learn/connect-vs/