1

我正在开发一个具有自动部署的 CI 流程。TFS Build 正在构建解决方案,然后它使用 InvokeProcess 任务启动 Powershell 脚本。Powershell 脚本使用 sqlpackage 将数据库更改部署为 dacpac,使用 Web 服务报告服务报告,将字体发送到 SSRS 服务器,并将网站本身部署到 1 个或多个 Web 服务器 - 整个过程使用部署配置文件来定义放置路径,服务器ips,安装文件夹等。每个环境都会有一个。

我希望能够构建解决方案并部署到内部服务器以运行自动化测试作为自动化构建的一部分。完成测试并手动检查构建后,我希望能够启动另一个构建定义,该定义仅具有标准构建模板的部署部分,它将仅采用构建号或构建放置位置, 并将相同的构建部署到不同的环境(即 staging、prod 等)

我遇到的问题是我目前正在使用配置文件转换管理我的大部分 Web/应用程序配置 - 即我有 Debug、Test、Prod 等的构建定义,然后是 Web.Debug.config、Web.Test.config 等.我只想执行一个构建,然后将相同的构建部署到不同的环境,但是目前构建只会为一个环境生成配置文件 - 即无论构建配置是什么。

最好的方法是生成所有配置文件(或者实际上为每个环境预先创建完整的配置文件),然后为特定部署选择合适的配置文件?或者我应该将 env 特定配置存储在我的部署配置文件中,并在部署时使用 powershell 更新适当的密钥?

这里的正常/推荐方法是什么?

4

1 回答 1

2

我建议为每个目标环境创建新的配置(例如,默认情况下你有调试/发布,创建更多)。然后使用内置的 web.config 转换,对于非 web 项目使用Slow Cheetah

这将为您指定要构建的每个配置(在您的构建定义中)吐出预配置的构建输出。

于 2013-01-25T16:46:27.473 回答