我们使用TeamCity作为构建服务器并使用git进行源代码控制。当我们构建发布包时,我想更新TeamCity中password
的{{1}}而不必手动执行。冒险在Git中使用生产密码似乎不是一个好主意,但TeamCity受到更多限制,并将其作为密码参数,可以。
我现在的问题是如何从Team City参数中获取值并将其转换为我的application.config文件?转换其他值我使用SlowCheetah。
我的理解是你应该将它作为imapClientConfiguration
下的参数添加,然后在构建期间以某种方式将其取出。目前我们使用Visual Studio runner。
application.config
System Properties
application.Release.config
<applicationConfiguration
apiUrl="http://localhost:13297/">
<imapClientConfiguration
userName="test"
password=""
host="MAILSERVER-TEST"
port="993"
useSsl="true" />
</applicationConfiguration>
答案 0 :(得分:0)
结束以下解决方案:
添加您不会在Git中使用的密码和其他信息,例如许可证密钥作为配置参数。
现在向git添加一个新文件,我添加了一个名为PasswordChange.ps1
的文件。
在实际构建之前添加新的构建步骤,并选择PowerShell作为runner类型。从文件运行脚本并设置脚本文件以匹配新创建的文件的路径。添加像-imapPassword %imapPassword%
在application.Release.config
中将password
的值设置为__imap_password_placeholder__
或类似的内容。
然后使用以下信息更新脚本:
param([string]$imapPassword, [string]$wordLicenseKey, [string]$excelLicenseKey)
$incomingMailServicePath = "Solution\Project\application.Release.config"
echo "Trying to change imap password for $incomingMailServicePath"
(Get-Content $incomingMailServicePath) |
Foreach { $_ -Replace "__imap_password_placeholder__", $imapPassword } |
Set-Content $incomingMailServicePath;
echo "Imap password changed"
...
全部完成。