.net TeamCity自动构建到生产

.net TeamCity自动构建到生产,.net,asp.net,teamcity,web-deployment-project,.net,Asp.net,Teamcity,Web Deployment Project,最近,我一直在尝试设置一个构建服务器来帮助自动化我的部署 我的问题是人们是否使用TeamCity这样的构建服务器来推动对生产(WebDeploy)服务器(以及您的测试服务器)的更改?如果是这样的话,您是通过每次从源代码管理进行重建,还是使用推送到测试服务器的构建文件(在为测试服务器进行构建时还必须创建所有web.config)。在以前的项目中,我们先使用CruiseControl.net,然后使用TeamCity将更改推送到测试服务器,我们使用了一个特殊的NAnt目标来触发部署 在TeamCit

最近,我一直在尝试设置一个构建服务器来帮助自动化我的部署


我的问题是人们是否使用TeamCity这样的构建服务器来推动对生产(WebDeploy)服务器(以及您的测试服务器)的更改?如果是这样的话,您是通过每次从源代码管理进行重建,还是使用推送到测试服务器的构建文件(在为测试服务器进行构建时还必须创建所有web.config)。

在以前的项目中,我们先使用CruiseControl.net,然后使用TeamCity将更改推送到测试服务器,我们使用了一个特殊的NAnt目标来触发部署

在TeamCity中,我们有一个构建项目(或者在TeamCity中也被称为target?),只需手动启动即可触发安装


安装是使用安装了我们的MSI软件包的远程PowerShell脚本完成的。

通常最好使用为测试环境部署生成的构建文件集与为产品部署生成的构建文件集相同,因为这是确保构建内容一致的唯一方法(即,在两个版本之间,可能在版本服务器上安装了一些东西,或者您的VCS可能返回一组稍有不同的源代码文件)

这在TeamCity中通过使用构建工件来实现,构建工件将生成的输出收集到一个特殊的存储区域中,允许在另一个构建配置中绘制它们以供以后使用。TeamCity文档中有更多信息

关于你的配置文件,考虑使用CONFIG转换。这些允许你为每个目标环境有一个Web.CONFIG的变体,具有不同的连接字符串、环境常量等等。


如果您实际上打算使用Team Cube部署到生产环境,您可能需要考虑使用Team Curror权限锁定这些值,以便只有受限制的组能够访问运行这些构建配置(在我们的商店中,这实际上是确保DEV和OPS团队之间的职责分节的要求)。。作为一个额外的预防措施,只为您的产品版本设置一个单独的版本代理,并将其禁用,直到您需要它为止(防止您意外运行产品版本配置…是的,我已经去过了).

我决定尝试的是一个MSBuild脚本,它将所有配置转换到一个位置,然后我尝试创建一个包(以及归档,因为我不希望将其作为zip文件,这是我目前正在努力解决的问题)

因此,我希望:

1st TeamCity配置:

  • Tranform web.configs
  • 按位置构建
  • MSDeploy测试
第二次构建配置|

  • 使用生成文件和实时配置将MSDeploy部署到生产环境

实现这一目标的任何帮助都将是巨大的

Google“teamcity msdeploy”,您将找到许多关于如何设置此功能的资源。例如,我遇到的最佳资源: