如何使用TeamCity安全地进行生产发布?

时间:2014-04-16 13:45:23

标签: continuous-integration teamcity continuous-deployment

我们目前使用TeamCity构建部署工件,然后进一步的TeamCity任务获取该工件并按需将其部署到我们的开发和测试服务器。

我们可以将密码和其他秘密数据存储在我们可以检查到源代码管理的属性文件中,因为这些都是内部服务器,开发人员可以完全访问它们。

然而,为了发布到Production(以及我们的最终测试层),我们不希望将密码和配置检入正常的源代码控制,或让开发人员能够发现密码。所以要做真实的'部署我们必须将工件交给另一个团队,他们维护一个包含生产值的属性文件。

存在哪些方法来存储这些机密并允许TeamCity在不泄露秘密的情况下运行部署?

(注意我是开发者之一,这不是一个信任问题......我不想找到生成密码的能力,所以我永远不会意外地知道它们并做一些可怕的伤害! )

3 个答案:

答案 0 :(得分:3)

您可能需要创建一个具有较窄权限范围的单独项目(例如,仅允许某些人编辑构建配置)。在此项目中创建构建配置,负责部署。在此配置中,您可以定义Typed Parameter类型'密码'将密码存储到生产环境中。

另一种选择是使用Deployer Plugin,尤其是通过私钥认证部署ssh的能力

答案 1 :(得分:1)

如果您可以使用第三方解决方案,请考虑使用CloudMunch等解决方案,它可以帮助您使用在部署时收集的这些安全参数和部署后加密来执行发布管理功能。

免责声明:我使用CloudMunch

答案 2 :(得分:1)

你可以做两件事。

  1. 使用teamcity项目仅为生产部署人工制品。只有操作员才能访问。

  2. Teamcity还支持运行具有不同用户ID的代理。您可以创建一个新的用户ID,该ID可以访问生产"机密" (密码和配置)。使用此ID在第1步中运行目标。