使用不同的app.config设置自动部署到许多服务器

本文关键字:部署 服务器 许多 设置 config app | 更新日期: 2023-09-27 18:18:18

我知道在SO上有很多这样的问题,但是到目前为止我还没有找到一个好的解决方案。我见过的最好的解决方案都是自定义的,但在实现自定义工具之前,我想听听您的看法。我们开始:

我有一个。net解决方案,包括几个web应用程序和一些windows服务。我想把这些应用程序自动化地部署到,比如说,10-20个不同的服务器上——但是应用程序/web。每个服务器上的配置文件可能有不同的值

微软对这个问题的回答是拥有10-20个不同的网络。在开发机器上本地配置文件,然后使用配置管理器选择正确的配置文件。但这还不够好,因为开发人员不知道产品服务器的设置,他们也不应该知道!

理想的解决方案是包含某种类型的"部署模型",其中定义了生产服务器及其设置,并且可以与一些部署脚本(可能是Powershell)一起使用,作为构建服务器(我使用TeamCity)的一个步骤。这可以通过在将解决方案xcopy到远程服务器之前替换配置设置来实现。但这是一项乏味而耗时的任务。

另一个解决方案是使用"configSource"来指向一个具有固定名称的文件夹,但这里的问题是配置文件的某些部分(如serviceModel)不能与configSource一起使用。

所以我还没有找到最好的答案。什么好主意吗?

使用不同的app.config设置自动部署到许多服务器

我们的部署模型的一部分(也是TeamCity集中构建到许多不同的服务器)是自动创建部署脚本作为MSBUILD文件的一部分,并基于MSDEPLOY/web部署2.0进行部署。

构建将自动生成一个适合使用MSDEPLOY部署的候选构建,并且还会启动一个powershell/cmd脚本,该脚本将选择合适的配置文件并将其复制到适当的位置。

部署到所有服务器就变成了将这些单独的部署脚本串在一起的情况(即使用批处理文件)。由于MSDEPLOY只发送文件更改,因此它通常相当快,并且可以用于备份和部署,因此作为部署脚本的一部分,它将:

  1. 获取相应服务器(例如Web1)的备份并将其粘贴到网络共享
  2. 将适当的包部署到服务器(Web1),根据需要转换任何文件(例如Web.Web1)。> Web.config)
  3. 写任何必要的日志

构建过程还会输出一个"undo"脚本,将适当的服务器恢复到备份。

这里有更多关于MSDEPLOY的信息。它也可以用于数据库等。

只是一个建议,可能会有帮助:)

[公然的供应商帖子]我们在uDeploy产品中使用的正是这种部署模型。

基本思想是定义一个部署过程,其中包括更新配置文件(app.config和web. config)的步骤。配置是最常见的ASP应用程序)。这些差异可以是每个服务器或每个逻辑环境(开发测试、质量保证、阶段、产品……)。或者,你也可以把模板app.config文件直接放在uDeploy中,我们会在部署时把它写出来。

该工具与TeamCity集成以检索构建以及用于部署和配置应用程序池和服务器的IIS。它还可以跟踪不同TeamCity构建的多个服务和web应用程序如何作为一个发布集聚集在一起。

从表面上看,我们似乎很合适。请随时通过eric@urbancode.com直接与我联系。干杯![/span]

我使用XmlPreprocess工具进行配置文件操作。它为多个环境/服务器使用一个映射文件。您可以使用Excel编辑映射文件。它很容易使用。在自定义PS脚本中调用XmlPreprocess,并将服务器名称作为环境参数传递。