建立屬於自己的Team Server及Team Project

前言

這篇文章紀錄了我如何使用Visual Studio Team Services(先前叫做Visual Studio Online)上的各項服務,而VSTS上的服務其實非常的多,我所用到的只是一小部分,其餘部分就只能先略過了,將來有機會再補充上來!

而VSTS其實是非常適合大學生來使用的,尤其是有需要組成團隊製作畢業專題的科系,透過VSTS能夠更有效率地協同合作開發。

 

這次的主題包括下列幾點:

那麼接著就讓我們開始吧!

 

--------------------------------------------------------------------------------------------------------------

  • 建立屬於自己的Team Server及Team Project

首先要請大家到Visual Studio的官方網站(如圖1-1),接著點選右上角紅框框內的登入來進行登入,若是沒有Microsoft帳戶,那就趁現在辦一個吧 <3

(圖1-1)Visual Studio官方網站

 

登入之後,大家應該可以看到下方的畫面,唯一不同的是,大家在帳戶那邊應該不會有任何資訊,接著請在右下角的 "立即建立免費帳戶" ,而這裡的帳戶指的就是Team Server!

(圖1-2)Visual Studio登入後畫面

 

下方圖片中的 "帳戶URL" 指的就是自己Team Server的位置,網域固定是visualstudio.com,而前面就隨自己喜歡就可以了。

"變更選項" 可以選擇要將這個Team Server架設在哪裡,有需要可以自己進行額外的設定,沒問題則直接按下建立帳戶。

(圖1-3) 建立Team Server

 

相信一定有人出現的畫面和圖1-3不同,而是和下方這張一樣。

請別擔心!你並沒有做錯什麼,在下方這個畫面中,比較特別的是要再選擇使用哪種 "版本控制" 來建立 "Team Project" 。

是的,你沒聽錯,這個頁面會直接替你建立預設的第一個Team Project,所以才需要在這時候就決定要使用哪一種版本控制來管理你的專案,有兩種方式可以選擇,一種是微軟自己出的版本控制 "Team Foundation Version Control"(TFVC);另一種則是Git。

(圖1-4) 建立Team Server-另一種畫面

 

剛建立完Team Server後,應該可以看到下方這樣的畫面,這邊就是要我們建立Team Server上的第一個Team Project。

Process template是要我們選擇我們所使用的工作流程,而Version control則和剛剛提到的一樣,要選擇這個專案所使用的版本控制工具,最後就可以按下Create來創建我們第一個Team Project。

(圖1-5) 建立Team Project

這裡就是管理專案的主畫面,對應的還有幾個標籤可以進到不同管理畫面,而在我們介紹這些之前,這邊有一點要特別提醒大家一點,在左上角的地方可以看到目前我們所處的管理位置,目前我們就處在DemoProject這個專案的管理畫面中,往上一層的話,則能進到整個Team Server的管理畫面。

(圖1-6) 專案管理畫面

當我們往左點選Visual Studio Team Services後,就可以看到我們離開專案管理畫面,進到Team Server的管理畫面(如圖1-7)了。

(圖1-7) Team Server管理畫面

 

在圖七中你可以管理你其他的Team Project,但是有一點要提醒的是,在 "Recent project & teams" 這個區塊中只會出現最近打開過的專案,若是新建而還沒有進入到管理畫面的專案是不會出現在這裡的,這時候可以按下旁邊的Browse來尋找我們剛建立的專案(如圖1-8)

(圖1-8)瀏覽專案

找到對應的專案後,可以在右手邊的視窗看到這個專案的相關資訊,而按下右下角的Navigate就會進入專案管理畫面。

那要如何再新增一個專案呢?

在剛剛的Browse旁有個New,按下去後就能夠看到下方的畫面。

(圖1-9) 新增Team Project

 

到這邊為止,我們已經成功地創建出屬於自己的Team Server以及Team Project了,再來我們就要來看看要如何管理Team Server和Team Project

 

--------------------------------------------------------------------------------------------------------------

  • 管理Team Server和Team Project

我們先來談談如何去管理我們的Team Server!

首先一樣進到我們管理Team Server的頁面,可以看到上方有幾個標籤分別是Overview、Users、Rooms、Load test。

而Overview就如各位所看到的一樣,可以看見你最近開啟的Team Projects和Rooms,右下角還有顯示這台Server資源的使用率。

(圖2-1) Team Server管理頁面標籤

 

(圖2-2) 最近使用的Team Project及Rooms

 

(圖2-3) Team Server資源使用狀況

 

既然叫做Team,自然而然的就要能夠邀請其他使用者來參加你的Team,在Users這個標籤中,你能管理你這台Server上的使用者,使用者的身份分為三種,分別是Basic、Stackholder、MSDN or Visual Studio subscriber。在一台Server上最多只能有5位Basic身分的使用者,而Stack holder和Subscriber則無限制

這些身分間的差別在於,只有Basic和Subscriber身分的使用者能夠對專案內的程式碼進行變更,Stack holder則無法檢視及變更程式碼,而Stack holder能做的僅有檢視及變更工作項目等等,從旁去監督整個專案的進度,通常會將廠商或是委託人以Stack holder的方式加入到專案中,方便他們實際看見專案進行的過程。

而如同下圖,若你並沒有 Visual Studio/MSDN 訂閱的話,你最多能夠再邀請四位非訂閱者一起進行開發,通常專題的人數剛好是五人左右,這也是為什麼說這項服務很適合大學生來使用!

(圖2-4)Users管理畫面

 

按下Add後就能夠新增User,輸入你想邀請的User帳戶並決定他的Access Level後,就可以按下Send Invitation來發送邀請,若是你選擇的Access Level為Subscriber的話,會在該使用者登入時進行檢查,若該使用者並沒有訂閱的話,會自動被取消邀請。

(圖2-5)新增User

 

按下Edit後也能夠切換User的Access Level,按下Delete則會直接在Server上移除這位User。

(圖2-6) 修改和刪除User

 

Room指的則是聊天室,預設在你建立Project的時候,會對應的建立一個聊天室,當然你也可以再建立其他你需要的聊天室。

右方會顯示目前這個聊天室有誰加入進來,你也可以按下Manage users來新增其他使用者進來。

(圖2-7)Rooms管理畫面

 

除了這些標籤外,右上角還有一個齒輪,可以讓我們對帳戶做更進一步的設定!

(圖2-8) 管理Account選項

(圖2-9) 管理Account畫面

 

接著切換到Settings標籤,可以更改時區、變更Server擁有人、更換網址或是刪除這台Server或稱Account。

(圖2-10) 設定Account

 

接下來我們來談談Team Project的管理頁面,如下方圖片所示,可以看見標籤分別有Home、Code、Work、Build、Test、Release,而這篇文章只會介紹到Code標籤而已。

(圖2-11) Team Project管理頁面標籤

 

在Overview標籤下的右下方可以看見Team Members這個磚塊,但這個專案底下卻只有我一個人,剛剛我新增的那位使用者哪裡去了呢?

(圖2-12) Team Members磚塊

 

雖然我們剛剛在Users那將這位使用者新增至了Team Server,但我們並沒有將他指派給任何一個專案,因此我們可以在這裡將他指派給這個專案。(目前這位使用者是Basic身分,而同理Stack holder也是一樣,你必須指派他給任何一個專案,他才能參與專案)

(圖2-13) Team Members檢視畫面

 

我們可以按下Add來指派新的User參與這個專案,只需要輸入User的帳戶或是名稱就可以了,VSTS會自動對應到Server上的User清單(如圖2-15)。

(圖2-14) 新增User至專案

(圖2-15) 自動對應Server上的User清單

 

但如果我並沒有事先將我想加入這Project的User新增到Server上的User清單,是不是能夠直接在這邊加入呢?

答案是可以的,只是VSTS沒有辦法自動對應就是了! 要注意的一點是,這位新加入的User同時也會直接以Basic身分加入到Server的User清單中!

(圖2-16) 直接新增新User至Project中

 

接著讓我們切換到Code標籤看看,在這個標籤中可以看見我們這個專案中的程式碼(前提是你的身分為Basic或Subscriber),而如下圖所示,目前我們還沒有新增任何的程式碼進來。

(圖2-17) Code標籤

 

到這邊為止我們已經學會要如何變更Server設定,刪除Server(Account),也學會新增User至Server和指派User至專案中了,也知道該到哪裡去檢視我們專案中的程式碼。再來我們就要實際地使用Visual Studio來連結我們所創建的這台Team Server,並開啟我們的Team Project。

--------------------------------------------------------------------------------------------------------------

  • 使用Visual Studio連結至Team Server,並開啟Team Project

首先先打開Visual Studio 2015,並在右上方確認自己已經登入了Microsoft帳戶。

(圖3-1) 確認登入Visual Studio

 

接著點選左上角,檢視(View)->Team Explorer,之後應該可以在右邊看見Team Explorer的視窗跳出來!

(圖3-2) 檢視選項

(圖3-3) Team Explorer視窗

 

大家看到的應該會和圖3-3有點不同,不過沒關係,接著我們按下 "管理連接"(Manage Connection),並選擇連接到Team專案。

(圖3-4) 連接到Team專案

 

接著應該會跳出下方這樣的視窗,再來點選 "伺服器" 來新增我們所建立的伺服器。

(圖3-5) 連接到Team Foundation Server

 

在這邊你可以看見你目前已有的伺服器清單,接著按下加入,來加入我們剛剛建立的Team Server。

(圖3-6) Team Foundation Server清單

 

直接輸入Team Server的網址即可,網址結尾是visaulstudio.com,再來就可以按下確定完成新增

(圖3-7) 加入Team Foundation Server

 

新增完成後,選取你要連接的Server,下方就會將這台Server上的Team Project顯示出來,再來你勾選你想要連接的Team Project,沒有勾選的Project等等就不會出現在Team Explorer中。

(圖3-8) 選取Team Server和Team Project

 

點選連接後,Team Explorer就會開始連接。

若使用的機器是第一次連接到該Project或是沒有建立該Project的儲存空間的話,應該會出現下方這樣的畫面。

它會要求你先複製這個儲存機制,來確保你擁有目前最新版本的Team Project檔案,接著才能夠往下繼續開發。

(圖3-9) 第一次連接到Project的Team Explorer

 

按下複製儲存機制後,Visual Studio會要求你確認複製儲存機制的路徑,預設的路徑會在 C:\Users\"使用者名稱"\Source\Repos\"專案名稱" 之下,這邊要注意的是,文章中Demo是使用Git版本控制,所以在Source底下的資料夾名稱會是Repos;若你使用的是TFVC版本控制,Source底下的資料夾名稱則會是Workspaces。

(圖3-10) 確認複製儲存機制路徑

 

複製完後,可以發現下方的方案會是 "找不到任何方案" ,原因是因為我們的Team Project本來就是空的。

(圖3-11) 複製完儲存機制

 

到這邊為止,我們已經成功在Visual Studio連接到Team Server並開啟Team Project,接下來我們要試著在Team Project上新增全新專案及新增既有專案。

 

--------------------------------------------------------------------------------------------------------------

  • 新增全新專案和新增既有專案至Team Project

在Team Explorer視窗下方的方案區塊點選新增,就能夠從Visual Studio提供的Template中選擇一個來新增專案。

(圖4-1) 新增專案

 

我們試著新增一個空的網站專案(EmptyWeb)至Team Project上。

(圖4-2) 新增網站專案

 

新增完成後,就可以在方案區塊中發現,剛剛新增的專案(EmptyWeb)出現了,這時候雙擊它就可打開這個專案開始編輯了。

(圖4-3) 新增完專案後的Team Explorer

 

那麼如果是已經開發到一半的專案,該如何加入到我們的Team Project上呢?

其實很簡單,只要將我們的專案資料夾整個複製到儲存機制路徑底下就可以了!

在下圖中,右邊的資料夾就是儲存機制的位置,可以看見我們剛剛新增的EmptyWeb專案已經在裡面了,所以只要把既有專案的整個資料夾複製或剪下到儲存機制底下就完成了。

(圖4-4) 複製或剪下專案資料夾至儲存機制

 

移動資料夾完成後就可以在Team Explorer中看見多了剛剛所加入的既有專案(MySQL_B)了。

(圖4-5) 新增既有專案的Team Explorer

 

雖然Visual Studio上已經顯示我們將兩個新的專案加入到Team Project上了,但實際到Team Project管理頁面上去看,卻發現Code標籤頁面裡還是什麼都沒有,這是為什麼呢?

(圖4-6) 新增專案後的Code標籤頁面

嘿嘿,這就和我們等等要談的版本控制有關囉!  在到下個章節前,讓我們整理一下這章節的重點吧!

在這章節中,我們練習在Team Project上新增了全新的專案以及加入既有的專案,不過問題是我們並沒有在網頁上看到對應的變更,至於原因呢,我們稍後會解釋。

 

--------------------------------------------------------------------------------------------------------------

  • 練習使用版本控制(以Git為Demo)

在我們揭曉剛剛那個問題的答案前,要先跟大家解釋為何要使用版本控制和介紹 Git 這套版本控制工具的機制!

對於版本混亂的困擾,我想絕大部分的人可能都感同身受,試想你們一組人馬要合力製作一份報告,在過程中這份報告(可以想成一份PPT)可能會更改非常多次,昨天有三次改動,今天又有五次改動,突然間大家又覺得昨天第二次改動的那個版本比較好,這時候你又得費盡心力的去復原報告到那一版本;可能有人會想每個版本都以不同名稱命名就可以解決了,但問題又來了,你該如何去定義每次的檔案名稱呢? 用日期嗎? 那一天內多次改動又該怎麼辦? 即使你自己有一套命名規則,那當這份報告是會經過不同人之手來完成的時候,你能確保每個人都了解你那套命名規則嗎?

除此之外,其實還有很多衍生的問題,全部都是因為 "多人" 協同合作開發而造成的,所以我們需要有一套共同的工具,來幫助我們處理版本的問題,而我們今天要使用的就是 Git 這套工具!

Git 是一套分散式版本控制工具,分散是指的便是每個人都會有一份完整的版本庫,不同於集中式版本控制,你可以直接在本機端(不需連上網路)發行版本,且因為是擁有整份版本庫,所以在發行版本時是很迅速的,說到這裡,還記得當初我們剛使用VS連結上Team Project時,VS要求我們複製儲存機制嗎? 當時就是在複製完整的版本庫(但因為是空的,所以複製下來什麼都沒有),而上一章問題的解答正藏在這段文字中,正因為是本機端並不需要連上網路,所以說我們所做的一切實際上都沒有被更新到伺服器端,因此當我們回到網頁上去確認時,才會發現Code標籤下依然是空的,那麼接下來我們就要將我們剛剛所做的變更,發行成一個版本,並推到伺服器端上了!

首先先來介紹一下 "變更" 這項功能,每當你對一份檔案做出了任何變更後(刪減程式碼、檔案等等),Git 都慧要求你認可(Commit)這些變更,並給予一段文字來敘述這些變更所代表的意思,最後發行成一個版本。

你可以看見我們剛剛所新增的 EmptyWeb 專案就出現在 "包含的變更" 中,而這時候我還無法按下認可(Commit),那是因為我還沒有給予這些變更一段敘述的文字。

(圖5-1) 變更

 

輸入完訊息後,就可以按下認可,來發行成一個版本!

(圖5-2) 輸入認可訊息

 

完成後會給予這個版本一組Hash ID(例如這邊給的是82046483),你可以看見後面VS告訴我們要同步(Sync)已將變更和伺服器共用,指的正是將本機端的變更推到伺服器端上。

(圖5-3) 完成認可(Commit)

 

點選 "認可 82046483" 後,可以看見這次認可內含有哪些變更的項目及檔案。

(圖5-4) 認可內容確認

 

點選同步則能夠直接進到同步資訊的頁面,"傳出的認可" 指的正是我們推出的版本,而 "傳入的認可" 指的則是其他人已經推上伺服器端的版本。

可以看見在同步頁面下有幾個功能可以使用,分別是同步、擷取、提取和推送。

擷取(Fetch)這項功能會確認伺服器端是否有其他人推上來的版本,若是有的話則會顯示在 "傳入的認可" 中。

提取(Pull)則是將 "傳入的認可" 中的所有版本都抓到本機端,在你推送前一定要先做提取的動作,以防你的版本和伺服器端不同。

推送(Push)則會將 "傳出的認可" 推到伺服器端上,如同剛剛提到的,推到伺服器端前,會要求你做擷取和提取的動作。

同步(Sync)就是將上面的這些動作一次做完,會先擷取伺服器端的版本,接著直接做提取,最後在將本機端的版本推上伺服器端。

(圖5-5) 同步(Sync)

 

接著按下同步,就可以將本機端的版本推上伺服器。

(圖5-6) 成功同步

 

推上伺服器端後,我們就可以在管理頁面的Code標籤上看見我們剛剛推上去的檔案。

(圖5-7) 同步檔案至伺服器端

 

不知道大家有沒有注意到一件事情,我們新增的既有專案(MySQL_B)到哪裡去了呢?

首先讓我們先回到變更(Change)下,我們只要按下Team explorer中的首頁符號,就能回到主功能頁。

(圖5-8) 首頁圖示

 

大家可以注意到下圖中的 "未被追蹤的檔案" ,我們的既有專案就在這,但為什麼它會是未被追蹤的檔案呢?

這是因為我們是直接把整個專案拖曳到目錄底下,而並不是使用VS來新增,所以預設會將這些變更當作未被追蹤的檔案,我們可以直接點選全部加入,將這些變更變為包含的變更。

(圖5-9) 未被追蹤的檔案

 

我們一樣可以把這些變更再推成一個版本並同步到伺服器上。

(圖5-10) 既有專案變更認可

 

同步至伺服器端後,一樣可以在管理頁面看到既有專案被新增上來了。

(圖5-11) 將既有專案推送至伺服器端

 

此外,我們可以點擊Team Explorer中的動作選項,下拉選單中的檢視紀錄可以檢視我們的認可紀錄。

(圖5-12) 動作選項

(圖5-13) 檢視紀錄

 

到此我們已經成功將專案新增到伺服器上了,如此一來我們隨時都能夠使用任何電腦連上 Team Project 並繼續開發專案。

--------------------------------------------------------------------------------------------------------------

 

Visual Studio Team Services除了上面這些功能以外,還有其他許多的功能能夠使用,大家可以再自行專研其他的功能!

這篇文章就到此結束,如果有任何問題或是想討論的,歡迎在下方留言,我會盡快回覆!

新手發文,若有謬誤,煩請告知,謝謝各位!

 

撰寫人:第十屆MSP技術組 賴柏融