我们大量使用TeamCity进行构建\测试。
据我所知,TeamCity 不是打包和部署的合适工具。当然,任何命令行进程都可以由 TeamCity 发起,但我们缺少的是“环境”的概念,即部署在哪里。
像 Nolio 这样的一些工具有任意格式。例如,我们可以为项目定义环境类型:
1 app server:
- IIS web site with:
- Virtual Dir \ Web Application:
- App Pool
- .NET Framework version
- Windows service with:
- Name
- Description
1 db server:
- db name
- db user
- db password
所以所有的环境(Dev、QA、PreProd、Prod)都会有这些部分的不同参数。在打包步骤(例如通过 Wix 到 MSI)期间,我们可以使用这些参数为特定环境创建 MSI,例如更新 Web.config 中的 connectionString。
其他项目可以有不同的环境定义。XML 格式可能是描述这种结构和值的最佳方式。
我们在 NAnt 脚本中实现了类似的功能,其中每个环境都有 .build 文件,其中包含平面值列表。然后我们<xmlpoke>
将值写入Web.config
文件。但这很难维持。
所以现在我们正在寻找一些可以与 TeamCity 集成的工具(以获取构建工件),将它们打包到可安装的 MSI 中,然后可以轻松地将其部署到环境中。这样的工具必须有“环境”这个概念,允许轻松定义结构(见上例),允许添加\修改\删除环境实例,然后在打包\部署时自动使用它们。
有什么想法或经验吗?