TFS 2010 的 Gate Check-In 閘道簽入 使用時機在 TFS 2010 的自動化建置時多了一個功能「閘道簽入 Gate Check-In 」的機制 這個功能對於 Configuration Manage 管理人員來說是個非常棒的事情
若團隊正在導入 Scrum / Agile 流程的話,或是看了 約耳的書 想要導入 持續整合 那麼一定要看一下這個。
大部分在講持續整合的相關文章中都會提到 每天大家下班的時候,無論程式碼是否寫完,都要把今天寫的程式碼做簽入。 晚上 Build Server 就會把大家的程式碼進行編譯,隔天就會跑出那些模組無法正常編譯成功的 Report。 但,在實務上這樣子做會遇到幾個管理上和協同開發的問題
程式碼寫到一半就簽入
是否有其他的方式可以達到每日簽入的效果?
所以回歸到基本面,我們要了解到自已的團隊開發流程再來決定。
ps.. 若是您的版控裡的程式碼沒有辦法取得最新的程式碼後就編譯成功,那麼您有必要認真地好好思考要依有限資源的情況下如何做調整。
那麼,閘道簽入是什麼? 它主要是解決「連續整合」( 持續整合 continuous integration ) 沒有辦法達到的
要用「持續整合」的功能,就代表程式碼一定要簽入到版控中才有辦法做 但,是否可以讓 Build 先執行 「建置」、「測試」、「分析」再決定是否可以簽入? 以避免有無謂的 Change Set
簡單來說它是在每個使用者在簽入時,它不會立即就寫入到 Repository。要等到建置完成後才會真正簽入。 ( 可以想像成 它跟 SQL 語法的 Transaction 有 Commit , RollBack)
什麼時候可以用它? 版控目錄的規劃可以參考下圖,並分類成 Dev、Main、Production ( 最少要 2 個 )
Dev 是一般開發人員的工作目錄,簽入次數非常頻繁。我們也允許 Change Set 是無法正常編譯 Main 就代表程式都要經過測試過、整合過才能合併進來,而且也只有特別有權限的人員才能存取
基於這樣子的規劃,會比較建議 Dev 用 「持續整合」,Main 可以用 「閘道簽入」
知道使用時機後,接下來我們看一下 整個的運作機制吧!
----------------- 回到 開發人員 -------------------------------- 接下來我只要把程式碼做 「簽入」或是「合併」
因為有設定簽入原則,可以看到單元測試有通過基本的要求。( 這個部分若沒有設定的話就會跳過 )
測試都通後, TFS 2010 會提醒這次的 Change Set 會先放在 擱置集
------------------- 回到 Build Server ----------------------------------------
簽入後馬上就觸發 Build 的動作
詳細的資訊 可以看到編譯成功,但有 8 個測試沒有通過,所以建置結果是失敗的
------------------ 回到開發人員 ----------------------------------------------
系統會主動通知剛剛簽入的無法正常通過建置
這個時候可以由本人 或是 指派其他人員 來協助修改「擱置中的程式碼」
按下去解除擱置後可以看到剛剛由 Build Server 產生的「擱置集」
那麼剛剛簽入的檔案怎麼了?
回到 版本管控的介面可以看到,剛剛要簽入的檔案還是保持在「簽出」的狀態
所以可以看到,閘道簽入可以讓管理人員避免沒有經過驗證、測試就把程式碼放到 Main 的分支中 這個部分對於跨不同分支管理時非常有幫助
|
|