0

在提升或部署構建時,我想自動交換單個數據庫連接文件。這可以作爲構建後步驟或作爲部署前的預包裝步驟完成。作爲構建後步驟交換測試數據庫連接代碼

被換出的文件是一個測試文件;正在交換的文件應該具有真正的數據庫連接配置。

這怎麼辦?我使用Hudson作爲CI服務器,如果有幫助的話,可以使用GitHub for SCM。

手動交換文件,恕我直言,是充滿人爲錯誤,可以完全忘記。此外,它還增加了一件事情,並阻礙了持續部署週期的勢頭。

回答

0

也許你不需要替換整個文件。作爲部署腳本的一部分,我們使用powershell來讀取配置文件,並根據我們部署的位置使用一些xpath magic來查找和更改數據庫連接字符串以進行測試/生產設置。

其有效地搜索和替換。

以下是修改.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>) 
+0

太棒了!你介意分享多一點(有點迷你方法)?我有點小菜,並會深深地感激它。 – 2010-09-15 05:17:54

+0

這是一小段代碼。我對哈德森不太熟悉,所以我不確定這會從哪裏執行。 – Darren 2010-09-16 07:17:41

0

的Windows

因爲我沒有PowerShell中:我實現了一個搜索和替換基於this blog post。請注意這種方法的一些侷限性。

的Linux/Unix

瞭解如何使用SED(man pages)。如果你有cygwin,你也可以使用sed。