2009-05-03 69 views
2

假設您有兩位開發人員在他們的筆記本電腦本地工作(A和B)。他們每個都有SVN回購的工作副本,並且他們在VS中編碼。每個人都有一個完整的應用程序副本。他們在每個停靠點都回復SVN。您如何影響集成服務器上的構建?

您有一個集成/測試服務器(C),它有另一個工作副本,每當您想測試時都會更新它。

您也可以擁有從C

一個生成後XCOPY

說出代碼是一個Web應用程序項目生產服務器(d),所以它需要一個明確的版本(而不是一個網站只需要源代碼並即時創建的項目)。

你如何在集成服務器(C)上管理它?

如果開發人員創建自己的機器上(A和B),然後按下DLL來整合服務器(C)......這是行不通的,因爲在整合服務器必須從他們兩人採取代碼開發一個通用的DLL。所以,所有的源代碼必須到達集成服務器(C),在那裏建立,只需要將所需的文件和DLL推送到生產(D)。

如何管理集成服務器(C)上的構建?你有從命令行定時構建?你是否在集成服務器(C)上安裝VS並構建這種方式?如果從命令行執行,如何管理VS通常在CSPRJ或SLN文件中管理的必需參考和其他設置?

+0

感謝所有評論。我們最終設置了CruiseControl,我們使用Nant中的CSC任務直接從集成服務器上的命令行構建。它工作得非常好,給我們帶來了更多控制和標準構建的好處,您可以從一堆開發人員那裏獲得VS的本地副本。 – Deane 2009-05-19 22:13:48

回答

2

此問題的最佳解決方案是使用CruiseControl等連續構建解決方案。在確定自己做這件事的所有缺陷時,你是正確的,最終,建立第三方軟件包並不需要自己解決這些問題就簡單多了。

CruiseControl的可以被配置爲基於一個顛覆建立提交,定時的基礎上,或按需。另外,它還可以運行所有的單元測試,並在出現問題時提醒用戶。這是一個非常棒的套餐。

0

我們還使用svn repo中的subversion commit hook來激活每次提交的單元測試構建。我們鏈接不同的構建,因此集成測試和Web測試在單元測試構建綠色時運行。此外,我們真的希望將發佈版本鏈接到所有這些版本的最後,但是我們的集成測試對於此不夠穩定(開發中SLA較差的片狀後端環境 - 我討厭它!)。目前我們手動啓動發佈版本。從質量角度來看,我們可以從所有綠燈直接進入驗收測試服務器,但這意味着您可能需要在驗收測試中運行交替圖像,因爲如果每次構建系統時都會重新部署,構建系統可能會造成相當多的停機時間成功的提交已經完成。 (在我們的項目,我們會下來的大部分時間上午10點至下午2點,因爲有在那個時候提交的continious流;)

+0

但是你怎麼實際執行構建?命令行? CC.Net? – Deane 2009-05-03 13:41:36

0

我們使用巡航控制系統爲一體的服務器上持續集成。我們的巡航控制腳本執行以下步驟:

  • 從cc上下載最新的SVN代碼。網絡服務器
  • 執行MSBUILD文件編譯的最新代碼下載
  • 複製發佈版本中的一個單獨的文件夾
  • 我們維持「釋放」建立一個單獨的文件夾,所以相同的腳本也犯了最新版本的SVN 「釋放」分支
  • 執行測試用例[使用內置NUnit的]
  • 發送出含有生成的狀態&測試執行一個電子郵件導致

上述命令都在我們的CC.net服務器上進行配置,並計劃在上午1點執行。爲了便於維護,我們在集成服務器上部署了我們的CC.net服務器。這也有助於我們自動執行我們的測試用例併發送結果(如果它是一個Web應用程序)。任何代碼破壞都會通過電子郵件發送給配置的訂閱者,並在第二天進行適當的操作。

一旦集成服務器上的一切正常,我們只需「更新」生產服務器上的「發佈」分支。

您可以找到有關cc.net更多信息here

,如果你需要與腳本的幫助,我一定能夠幫助您。

相關問題