在过去的几个项目中,我使用 BitBucket 私有存储库来为不同的项目保持生产就绪配置。该存储库中的每个项目都有自己的分支,以保持敏感和私人信息远离公众视线。
有些项目是开源的,同时存在于真实的生产环境中;当涉及到使用chef
,fabric
等工具进行部署时。我只是签出有关项目的必要分支并将配置上传到生产服务器。
我很好奇,当您必须管理生产配置并同时保持项目开源时,您如何管理开源项目的配置?
简短回答:应用程序存储库不应包含任何特定于部署的配置。
虽然不是应用程序代码的配置文件确实经常会为了易于使用而进入项目存储库,但这通常是 a) 糟糕的安全实践(因此您不愿意开源它)和 b) 违反关注点分离。
相反,您应该为所有应用程序部署和脚本创建一个单独的存储库。 部署存储库中的文件将引用应用程序存储库。 按照此模式,应用程序存储库包含"内容",部署存储库包含"如何"——这通常因部署而异。
此规则的例外情况包括在所有部署中永远不会更改的脚本或配置(例如Procfile
或守护程序脚本),因此应保留在应用程序存储库中。