在持续部署中管理密码

Jac*_*cob 12 c# asp.net-mvc teamcity continuous-integration

我们很好地使用TeamCity部署了持续集成环境.当我们完成CI流程并转向持续部署时,我们遇到了管理生产密码的问题.对于配置中的其他更改,我们使用Web.Config转换.但是,我真的不想在构建配置文件中烘焙生产密码.

在CI/CD之前,我们将采用Web.config,使用aspnet_regiis解密连接字符串,更改密码,然后重新加密.显然,这很容易出错,完全没有CI/CD的精神.

我有几个其他的想法,基本上都是关于在部署脚本中使用某些东西重新编写然后加密文件的连接字符串部分,但似乎这必须是一个常见的问题,并且必须有一些接受解决方案 但到目前为止,我找不到它.有没有"正确的方法"?

谢谢!

Pav*_*her 14

自TeamCity 7.0以来可用的一种可能的解决方案是使用类型化参数.您可以在TeamCity中定义类型为password的参数,并以某种方式将其传递给您的构建脚本(作为环境变量或构建脚本属性).

TeamCity将这些参数的值以乱码的形式存储在自己的配置文件和数据库中.如果密码出现在构建日志或构建参数页面上,则它将替换为***.

  • 请注意,原始密码可能会出现在日志中,甚至 TeamCity 站点都说:“将参数设置为输入密码并不能保证无法检索原始值。” 我面临的情况:当您的 git push 失败时,它会打印“请求的 URL 返回错误:访问 <您的 url> 时出现 400 错误请求”这一行。因此,如果您使用带有用户/密码信息的 git url 密码,即使您以适当的方式输入,密码也不会被替换为 **** (2认同)