在推广或部署构建时,我想自动交换单个数据库连接文件。这可以在部署之前作为构建后步骤或预打包步骤来完成。
正在换出的文件是测试文件;被交换的文件应具有真正的数据库连接配置。
如何做到这一点?我使用Hudson作为CI服务器,如果这有帮助,并使用GitHub进行SCM。
手动交换文件,恕我直言,充满了人为错误,可能完全被遗忘。此外,它还增加了一件事,并阻碍了持续部署周期的势头。
答案 0 :(得分:0)
也许您不需要替换整个文件。作为部署脚本的一部分,我们使用powershell来读取配置文件并使用一些xpath魔术来根据我们部署的位置查找和更改数据库连接字符串以进行测试/生产设置。
有效地搜索和替换。
以下是修改.NET Web配置文件的代码段,但对其他基于xml的配置文件也可以这样做。
$Config = (Get-Content -Path <Path to web.config>) -as [xml]
@(
@{
xpath = '/configuration/appSettings/add[@key="Setting1"]'
edit = { $_.value = <Setting1 value> }
},
@{
xpath = '/configuration/connectionStrings/add[starts-with(@name, "ConnString")]'
edit = { $_.connectionString = "Data Source=<servername>;Initial Catalog=NorthWind;Integrated Security=SSPI" }
}
) |
ForEach-Object {
$Config.SelectNodes($_.xpath) |
ForEach-Object -Process $_.edit
}
$Config.Save(<path to web.config>)
答案 1 :(得分:0)
窗
由于我没有powershell:我实施了基于this blog post的搜索和替换。请注意这种方法的一些限制。
的Linux / Unix
了解如何使用sed(man pages)。如果你有cygwin,你也可以使用sed。