我們正在尋求改進我們的SDLC的幾個方面。我們現在所擁有的是以下內容,這些都是相當新十歲上下光年超出了我們幾年前有:持續集成和Web部署工作流程
- 代碼:我們主要是一個.net店。我們主要開發Web應用程序(MVC/SQL Server)。但我們也有一些批量控制檯應用程序。
- SCM:Git和Enterprise GitHub。大部分工作直接在主分支(隊列boo-hiss)中完成,但我們認識到需要轉移到分支模型。我們將實施一些Vincent Driessen's model的味道。
- CI服務器:Team City。我們在一兩年前的迫切需求是設置部署自動化以避免危險的手動腳本。我們現在使用TeamCity通過PowerShell啓動部署腳本。 (它使用msbuild來簡單地構建目標配置 - 標準是調試和發佈;我們已經在每個解決方案中設置了Dev,QA和Prod配置 - 在Visual Studio解決方案中定義。)可悲的是,我們尚未實際使用TeamCity的目標是持續集成。爲此,我們需要實施TDD。部署自動化從每個存儲庫的主分支中抽取。
- 環境:我們有3個環境,每個環境都有專門的Web,批處理和數據庫服務器。我們稱他們爲Dev,QA和Prod。 Dev是我們的測試環境。 QA供最終用戶測試。 Prod是prod。通常,我們的部署自動化將每個應用程序推送到每個環境一次。它目前無法處理將同一應用推送到單個環境中的多個位置。
請注意,我們開始有一些情況需要進行並行開發:一個功能正在一個分支中進行;另一個分支的另一個;並在另一個修補程序。很顯然,在主人身上做任何事情都是不可接受的。
這裏就是我想去:
- 在Git中開始一個分支模型。
- 將部署自動化從團隊城市遷移到自定義的強大部署工具。
- 實施TDD。
- 使用TeamCity的目的,持續集成。
這些是高層次的目標,我對如何開始這樣做(特別是對於部署自動化)有粗略的想法。但是,我有一些相當大的突出問題令我(嗚哈哈)總體規劃受挫。因此,下面是我喜歡從SO社區輸入的項目:
- 當您執行CI並啓動自動化測試時,您會針對哪個分支執行此操作?我在理論上認爲,你不想在你的「發展」和(明顯)「主」分支中「破碎」的代碼。你是否反對CI開發或所有分支機構?
- 您是否在之前或之後將您的代碼合併爲主?換句話說,你是從發展還是主導推動?
- 有時我們需要測試(至少在QA中,也許在Dev中)並行更改,如錯誤修復和功能。你是否真的設置了多個測試網站(例如myappqa1.blah.com和myappqa2.blah.com等)?這些多個環境如何在您的部署自動化中發揮作用?
- 只是出於好奇,你是否每晚都建立 - 如果是的話,反對哪個分支?你是否在任何地方部署這個夜間生成?
- 你如何打包你的應用程序(即商店發佈)?現在,我們使用TeamCity和PowerShell針對VS中定義的配置運行msbuild。它會將所有環境構建到一個zip文件中。這存儲爲TeamCity構建的工件。以下是我正在談論的內容的視覺效果:然後,另一個腳本將從zip文件中挑選合適的環境並進行部署。我們是否應該在Team City或Git中存儲發佈包(使用「發佈」功能)?
- 與您的部署自動化相關:您是否部署以前打包/構建的應用程序,還是一舉構建和部署所有應用程序?
您的反饋非常感謝!
感謝 湯姆
這本書(「持續集成」)會給你一些答案......考慮將問題的範圍縮小到一個具體的問題,避免「你怎麼做」的短語通常要求意見而不是回答。 –
您的問題雖然已經非常清楚地解釋和闡述,但可能是[太寬泛]的定義(http://stackoverflow.com/help/dont-ask)。阿列克謝的建議很好。 – Nanhydrin
@AlexeiLevenkov有幾本CI書籍...... – ironfist