2011-12-20 43 views
3

我知道有很多像這樣的問題,但迄今爲止我還沒有找到一個好的解決方案。我見過的最好的解決方案是自制的,但在實施自定義工具之前,我想聽聽你的看法。所以我們去:使用不同的app.config設置自動部署到許多服務器?

我有一個.NET解決方案與幾個Web應用程序和一些Windows服務。我想將這些應用程序部署到10-20個不同的服務器上 - 但每個服務器上的app/web.config文件可能有不同的值。

微軟對這個問題的回答是在開發機器本地有10-20個不同的web.config文件,然後使用配置管理器來選擇正確的。但這還不夠好,因爲開發人員不瞭解生產服務器設置,他們也不應該這樣做!

理想的解決方案是包含某種類型的「部署模型」,其中生產服務器及其設置已定義,並且可以與某些部署腳本(可能爲Powershell)一起用作構建中的一個步驟服務器(我正在使用TeamCity)。這可以通過在將解決方案複製到遠程服務器之前替換配置設置來完成。但這是一項繁瑣耗時的任務。

另一種解決方案可能是使用「configSource」指向一個固定名稱的文件夾,但這裏的問題是配置文件的某些部分(如serviceModel)不能與configSource一起使用。

所以我還沒有找到最好的答案。有任何想法嗎?

+0

什麼(其他)工具,你起訴?新的軟件包管道? – 2011-12-20 11:31:37

+0

那麼我一直在使用的一些工具是:VS2010 - > SVN - > MSBuild - > TeamCity - >用於部署的自定義PS腳本。因爲我有Web應用程序和Windows服務,所以我沒有使用WebDeploy。 – lasseschou 2011-12-20 12:04:19

+0

查看InRelease,它與TFS的整合比TeamC更好,但可能仍然可以用來解決您的問題(我是該產品的開發者):http://inrelease.incyclesoftware.com – joerage 2011-12-20 16:09:53

回答

1

我們的部署模型的一部分(也是TeamCity集中構建到多個不同的服務器)是自動創建部署腳本作爲MSBUILD文件的一部分,並將部署基於MSDEPLOY/web部署2.0進行部署。

該構建會自動生成適合使用MSDEPLOY進行部署的構建候選項,並且還會敲出將選擇相應配置文件並將其複製到位的powershell/cmd scriptlet。

對所有服務器的部署就成爲將這些單獨部署腳本串在一起(即使用批處理文件)的情況。由於MSDEPLOY只發送了文件更改它通常相當迅速,並且可以用來進行備份以及做部署,從而部署腳本它將部分:

  1. 採取相應服務器的備份(如WEB1),並把它貼在轉換的任何文件作爲必要的網絡共享
  2. 部署相應的包到服務器(WEB1)(例如Web.Web1.Config - > Web.config文件)
  3. 寫任何必要的日誌

構建過程還吐出一個'撤銷'腳本,將恢復e適當的服務器到備份。

還有更多的MSDEPLOY here。它也可以與數據庫等

只是一個建議使用,它可能會有所幫助:)

+0

我知道這是幾個月前,但我把這個標記爲讓我朝着正確方向的答案。謝謝! – lasseschou 2012-07-31 12:07:39

0

[Blatant vendor post]我們在我們的uDeploy產品中正好使用這種部署模型。

其基本思想是定義一個單獨的部署過程,其中包括更新配置文件的步驟(app.config和web.config是ASP應用程序最常用的)。這些差異可以是每個服務器或每個邏輯環境(dev test,qa,stage,prod ...)。或者,您可以直接在uDeploy中放置模板app.config文件,然後在部署時寫出它。

工具integrates with TeamCity檢索構建以及用於部署和配置應用程序池和服務器的IIS。它還設計用於跟蹤TeamCity構建的多個服務和Web應用程序的不同之處,並將其作爲發佈集合使用。

從表面上看,這聽起來像我們可能有一個體面的適合。請隨時直接通過[email protected]與我聯繫。乾杯! [/ blatant廠商帖子]

0

我使用XmlPreprocess tool進行配置文件操作。它爲多個環境/服務器使用一個映射文件。您可以通過Excel編輯映射文件。這是非常容易使用。 在自定義PS腳本中調用XmlPreprocess,並將服務器名稱作爲環境參數傳遞。

相關問題