TeamCity 10.0.4更新application.config文件中的密码

时间:2017-02-24 15:21:43

标签: git teamcity

我们使用TeamCity作为构建服务器并使用git进行源代码控制。当我们构建发布包时,我想更新TeamCity中password的{​​{1}}而不必手动执行。冒险在Git中使用生产密码似乎不是一个好主意,但TeamCity受到更多限制,并将其作为密码参数,可以。

我现在的问题是如何从Team City参数中获取值并将其转换为我的application.config文件?转换其他值我使用SlowCheetah。

我的理解是你应该将它作为imapClientConfiguration下的参数添加,然后在构建期间以某种方式将其取出。目前我们使用Visual Studio runner。

enter image description here

application.config

System Properties

application.Release.config

<applicationConfiguration
  apiUrl="http://localhost:13297/">
<imapClientConfiguration
  userName="test"
  password=""
  host="MAILSERVER-TEST"
  port="993"
  useSsl="true" />
</applicationConfiguration>

1 个答案:

答案 0 :(得分:0)

结束以下解决方案:

添加您不会在Git中使用的密码和其他信息,例如许可证密钥作为配置参数。

enter image description here

现在向git添加一个新文件,我添加了一个名为PasswordChange.ps1的文件。

在实际构建之前添加新的构建步骤,并选择PowerShell作为runner类型。从文件运行脚本并设置脚本文件以匹配新创建的文件的路径。添加像-imapPassword %imapPassword%

这样的脚本参数

enter image description here

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"
...

全部完成。