1

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

我希望能够构建解决方案并将其部署到内部服务器,以便将自动化测试作为自动构建的一部分来运行。一旦测试完成,并且构建已经被手动检查,然后我希望能够启动另一个只有标准构建模板的部署部分的构建定义,这将只需要构建编号或构建放置位置,并将相同的构建部署到不同的环境(即分段,产品等)

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

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

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

+0

其实,我只是碰到这种办法来了,这可能意味着我能够得到两全其美的... http://sedodream.com/2010/04/26/ConfigTransformationsOutsideOfWebAppBuilds.aspx 将研究它,但打开其他建议 – hitch

回答

2

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

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