2013-06-27 29 views
1

您好同事開發者。ALM - 應用程序生命週期管理 - 構建和部署挑戰

我困住了一個問題,我可以用一些反饋來以最好的方式解決問題。

該問題圍繞源代碼管理 - >自動構建 - >部署。基本上是ALM(應用程序生命週期管理)。

我們有一個產品 - 帶有MS SQL數據庫的ASP.NET Web應用程序。該產品在我們的生產環境中的多個虛擬機上運行數百個具有關聯數據庫的網站。目前,Web應用程序和數據庫正在使用IIS 7和SQL數據庫服務器2008 R2的服務器上運行。該產品本身在Team Foundation 2012中受源代碼控制。

多年來,該產品的新版本發佈多年來一年一次或兩次。現在我們將重點關注更頻繁的發佈,因此我們需要針對該產品的ALM策略。

部署現在的策略:

在版本之間的發展時期,SQL更新腳本已手動創建 - 數據庫做出更改腳本被更新每次。當應用程序準備好部署時,它將在開發人員機器上進行編譯。包含所有更改的數據庫將備份到.BAK文件中。 Web應用程序,.BAK文件和更新SQL腳本將被打包(.zip)並上傳到生產環境以供部署。

更新現有運行的產品:

  • 複製/粘貼到目標網站的物理文件夾中的Web應用程序。
  • 更新web.config文件 - connectionstring和應用程序
  • 變量。通過SQL管理工作室運行更新腳本

這將爲每位客戶完成 - 數百次。

這是一個非常繁瑣且容易出錯的任務,我根本不喜歡它!

我想要做的是,

  • 源控制數據庫作爲團隊基礎數據庫項目
  • 自動建立使用Team Foundation 2012 生成服務器的Web應用程序。
  • 將生成服務器的輸出部署到生產環境的多個網站 以及自動生成的SQL 針對SQL Server運行的更新腳本。

我一直在使用googling我的屁股 - 只發現關於構建,部署,自動SQL更新腳本等的零碎。

我認爲部分正確的方向是源碼控制數據庫並使用TFS Build Server。我很困惑如何使用TFS Build服務器的輸出,以簡單和可控的方式進行部署。

理想情況下,我希望TFS構建服務器使用最新版本的Web應用程序,最新版本的數據庫,部署後腳本包括自動生成的SQL更新腳本從以前的構建到當前建立。這可以包含在例如一個nuget包。然後,我希望能夠創建一個額外的Web應用程序,它應該管理部署 - 目標,版本,iis網站,sql服務器,web.config connectionstrings等。

有沒有人有任何建議如何實現這一點?你怎麼做到這一點?

回答

1

您可以使用發佈管理工具來執行此操作,無需創建其他Web應用程序。

一個這樣的例子是來自Red Gate的部署管理器。 (免責聲明:我在那裏工作。)它具有針對ASP.NET應用程序和SQL Server數據庫的內置部署操作。您可以使用命令行工具RgPublish.exe爲您的Web應用創建一個包,正如您從TFS Build描述的那樣。使用sqlCI.exe命令行和關聯的NANT/MSBuild腳本可以爲數據庫完成相同的操作。

然後可以將相同的包部署到每個服務器。儘管如此,您可能會遇到100多個網站的可擴展性問題。

數據庫部署通過自動生成升級腳本來工作,但您可以在首次構建軟件包時更改將升級腳本放入軟件包的行爲。這些分別稱爲「動態」和「靜態」升級方法。