程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Team Build 2010 – Gated Check-in 拒絕無法編譯的代碼嵌入

Team Build 2010 – Gated Check-in 拒絕無法編譯的代碼嵌入

編輯:關於.NET

Team Foundation Server 2010為基於Microsoft .NET開發平台進行開發的企業提供了完整的團隊管理 平台和相應測試略,相比起TFS 2008來說的確有了非常大的改變。今天我們就來談談在Team Build 2010 中引進的Gated Check-in策略。

如果你的解決方案配置了Team Build,那麼根據不同的Trigger會在不同的條件下觸發team build. Team Build提供了以下幾種不同的觸發條件:

Figure 1: 不同的觸發Team Build的條件選項

Manual 手動觸發。普通的check-in不觸發Team Build. Continuous Integration 持續集成-每次check-in都會觸發一次Team Build。 Rolling Builds 滾動式構建-在每次build完成後的特定時間後自動觸發。 Gated Check-in 只有在team build成功運行後才會提交。 Schedule 可設定build運行時間。

 

從上表我們可以看出,除了Geted Check-in其它的方式都是首先提交變化,然後運行Team Build。 Team Build運行的成功與失敗並不影響本次Check-in。這就導致可能某個開發人員嵌入了他的代碼,但是 Team Build沒有通過,而後其它的嵌入全部無法通過Team Build-即便你的本次嵌入從單純意義的build上 講是可以通過Team Build的測試的。去修改Team Build報告的錯誤也要浪費很多的時間。那麼Gated Check-in做了什麼?它可以幫助我們做什麼?

Gated Check-in實際上分三步,第一,將你的變化Shelve(擱置)到服務器上(注意:Shelve的代碼相 當於給你的代碼創建了branch);其次,運行Team Build對你提交的改動後的解決方案進行編譯;最後, 如果通過編譯將改動提交給Source Control,否則不提交。這樣做的好處是,保證每個人嵌入的是可以被 構建的獨立的代碼,不影響其他人的工作。

在Build Definition中,你仍然可以選擇是否運行Test,運行什麼樣的Test等,如果測試失敗Build是 否會失敗。這樣做提供了很好的機會讓我們去創建多種不同的Build Definition.比如,你可以選擇在普 通的Check-in中不運行Test,一次來節約服務器的消耗和提高對Check-in的響應。然後創建個 Nightly Build,讓其在夜晚運行,包含這些Test。當然,這不是Gated Check-in所關心的。如果你設置了Fail Build On Test Failur,那麼解決方案中如果有Test項,一旦失敗的話Build將會失敗,而你的改動也無 法被提交。

Figure 2:Build Definition中可以定義對Test的運行條件

對於Gated Check-in,在check-in時會彈出對話框確認是否需要Build這些變動。你也可以選擇不 Build,但是這需要較高的權限。一般不建議取消Build的過程。

Figure 3:Build Changes for Gated Check-in

好了,在設置好你的Build Definition之後我們來看看在做了一次無法通過Team Build的Check-in之 後它如何反應?

Figure 3:TFS拒絕了無法通過Team Build的嵌入並且給了詳盡的提示

我們這次的嵌入被TFS拒絕了。原因是“7/8 test(s) passed, 1 failed, 0 in conclusive”。原來 是Test無法通過。而且後邊還給出了Code Coverage:“33% of all code blocks covered”。以及本次 嵌入對test的影響都有詳盡的列出。那麼現在怎麼辦呢?代碼是被George嵌入但卻被TFS暫時Shelve到服 務器上了,然後George離開了。如何幫他修改問題呢?

Figure 4:Unshevlve Changes提供了讓你得到這些被擱置的變動的機會

UnShelve 就是將上一次Shelve到TFS上的變動(文件)拿回到你的工作區中。此時,我們可以通過點 擊Unshelve Changes鏈接來將George的變動導入到我們自己的工作區,然後修正後再次進行提交來幫助他 將其變動提交到Source Control.

那麼如果你提交的是可以通過Team build的變動呢?首先讓我們來配置一下Build Notification吧, 它連接到Team Build每次build的時候可以發出通知。選擇“Start | All Programs | Microsoft Visual Stuido 2010 | Team Foundation Server Tools | Build Notification”,如下圖:

Figure 5:運行Build Notification來通知每次Build

在Build Notification的配置界面選擇TFS 地址和相應的項目以及Build Notification,這些配置了 對於哪個項目的哪些Build我們會被通知。並且我們選擇在Started和Finished時分別提示。

Figure 6: 配置Build Notification來通知Build

當Team Build完成了服務端的Build之後,如果build成功客戶端的Build Notification將會在第一時 間提示你有變動被嵌入,並詢問是否更新你的工作區。

Figure 7:Gated Check-in被提交

Reconcile就好比於Get Latest,TFS會將這些提交的變動刷新到你的工作區。你也可以選擇Ignore來 忽略本次更新,並且在適當的時候到Build Exploer中點擊相應Build來重新更新你的工作區(最簡單的辦 法Get Latest:)

Figure 8:Reconcile Workspace

Gated Check-in提供給我們對項目開發過程中項目質量的初步保證。對於程序員的交付品通過Test以 及MSBuild進行初步的管理來保證提交品是可以工作的,這在很大程度上減輕了我們持續集成的壓力,並 提供給我們很好的途徑來提高持續集成過程中的各種測試工作。Team Build2010對於企業的自動化構建有 很大的幫助,在接下來我們會從頭對team build進行介紹。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved