2011-12-06 50 views
6

我在C#中的ASP.NET MVC 3網站與最簡單的方法來做夜間部署ASP.NET MVC 3網站?

  • ASP.NET MVC 3的互聯網項目
  • 域項目(類庫)
  • 單元測試項目
  • 的SQL Server 2008 R2數據庫在水銀

  • 源控制什麼是做一個12:00 AM夜間自動建立一個最簡單的方法nd站點部署,以便每天我可以去dev.mycompany.com,並會看到我的開發版本的實時更新版本?

    我想使用詹金斯做所有的建築物。

  • 回答

    12

    我幫助維護一個很像這樣的系統 - 在詹金斯。顯然,細節會根據您的項目結構有所不同,但這裏的大概就是我們詹金斯的工作做:

    • 拉碼(我們使用的Git,但有詹金斯一個水銀插件以及)
    • 執行任意SQL架構更改對我們從冪等腳本的測試數據塊(我們使用Ant腳本前的日期我們使用哈德森/詹金斯)
    • 運行的MSBuild(另一詹金斯插件)
      • 構建文件是我們的.sln(或者可以使用一個web .csproj - 參數略有不同)
      • 命令行參數:
        • /p:Configuration = Dev/p:Platform =「Any CPU」/ p:DeployOnBuild = true/p:DeployTarget = Package /p:DeployIisAppPath="dev.mycompany.com/「/五:米
      • 這將構建一個.zip文件,一個.cmd文件,有的.xml文件,其中包含所有你需要更新部署到您的網站
    • 揭開序幕另外兩個「msdeploy 「詹金斯的工作,每個.NET Web服務器上的一個工作臺
      • 每個.NET web服務器也是一個詹金斯奴隸
      • 我們在測試兩臺服務器,通過NLB
      • 平衡每個「msdeploy」工作副本的.zip/.CMD/.XML從構建服務器到Web服務器上的臨時位置的文件,然後運行。 CMD文件
      • .cmd文件執行msdeploy,它推動你需要出去您的開發Web服務器一切

    我們有我們的運行測試NUnit的一個單獨的工作,但你可以很容易地整合你的測試進入你的主要工作。我們構建整個.sln而不是web.csproj的原因之一是,我們可以使用相同的內置代碼運行我們的單元測試。

    如果你還沒有,你需要在構建服務器上安裝ASP.NET MVC3,.NET 4和msdeploy,我相信你的Web服務器上也需要大部分相同的文件。

    對於調度,您可以選擇「定期構建」或「輪詢SCM」作爲構建觸發器,然後使用類似cron的語法(0 0 * * *)在午夜運行。