如何使用 git 自动部署带有配置文件的网站?

How to deploy a web-site with a config file automatically with git?

我有一个用 NodeJS 编写的应用程序。 每次我在主分支上使用 git 推送我的代码时,代码都会自动部署到我的服务器上。一切正常。

但是我的 config 文件有问题,它在我的本地服务器和远程服务器之间是不同的。
为解决此问题,我已排除到 git 我的 config 文件并将其复制到 _config。 在 _config 文件中,我放置了我所有的配置服务器,当代码部署到服务器时,我自动创建了一个 $ cp _config config 以获取良好的配置值。
这个解决方案有效,但我想知道它是否是部署我的 config 文件的最佳解决方案,以及将它放在 Bitbucket 上是否安全。
例如,如果我想与某人共享我的存储库,我不能,因为他会看到我的配置。 还有另一种解决方案吗?

如果您有任何建议,请提前致谢。

Hrm,可能不是一个完整的解决方案,但检查过程环境变量。

我通常有一个我私下保存的,我将其添加到 gitignore,然后推送示例环境 var 文件

您的解决方案工作正常,即使它对您来说可能有点粗糙。

配置通常由两种类型的数据组成:

  • 敏感数据(例如密码、令牌、凭据)
  • 其他一切(例如常量、路径、位置、URLs)

与生产机器相比,这两种类型的任何一种配置变量在开发机器上都可能不同(dev API URL vs prod API URL; dev API 密码与产品 API 密码)。

第二种类型的配置数据可以在您的 git 存储库中提交,如果您这样做的话,这可能是最简单的。您可以为开发制作 1 个文件,为生产制作 1 个文件,例如根据环境变量加载正确的文件。

第一种类型 - 密码 - 不应提交给 git。即使您有私有存储库也不行。太危险了。相反,您可以使用您描述的机制,或者您可以将密码放在您在生产环境中设置的环境变量中。

在我的项目中,我用三个配置文件解决了这个问题。

  1. 默认配置:此配置文件包含默认配置。这样的配置应该是安全的并且适用于大多数安装。这可能是真实的配置文件或具有默认值的源代码的某些部分。此文件已提交到 Git 存储库。

  2. 示例配置文件:这个文件看起来像第三个文件,但它没有被应用程序使用。我通常给它.example后缀。此文件提交给 Git 存储库,但不包含敏感数据。

  3. 本地配置文件:带有本地更改的示例副本,例如数据库密码或启用调试模式。此文件 提交给 Git 存储库,它包含敏感数据。它应该列在您的 .gitignore 文件中。

加载此类配置时,我将默认文件与本地文件合并,因此本地文件的内容会覆盖默认值,但如果本地文件中缺少某些内容,则会使用默认值。这样我就可以拥有最少的本地文件,并且大部分配置都受到开发人员提交的影响。

当使用框架并且您的应用程序安装给许多客户时,您可能希望拥有更多的配置文件。那么你可能有框架配置文件、应用配置文件、per-customer配置文件和本地配置文件。并且所有文件按照这个顺序合并在一起,只有最后一个文件,本地配置,没有提交。当然,这涉及更多的存储库,git 子模块或类似的东西。