如何在持续集成中管理 .env 配置

How to manage .env configuration in continous integration

我用 nodejs 开发一个应用程序并做出反应。我在不同的环境中使用 dotenv 进行配置。

我使用 TFS 2017 构建和发布我的应用程序。

添加生产环境的 .env 文件的最佳做法是什么?

生产配置可能难以维护。您可以使用任何模块甚至编写自己的自定义模块来将环境变量加载到您的应用程序中。

但是,为每个产品在本地维护生产 .env 文件(即提交它们或将它们放入您的 docker 图像中是一个坏主意。如果您碰巧更改了其中一些配置,您将不得不手动更改每个应用程序的代码,构建 docker 图像(如果需要)并重新部署。如果只有几个应用程序,这可能很容易。但是如果相关应用程序的数量增加大小(在基于微服务的架构中通常会发生这种情况)——它们都共享凭据、用于数据库连接的 ip 等。手动更改代码并重新部署所有应用程序成为一项繁忙的任务。

通常,开发人员倾向于保留所有凭据和环境变量的中央存储库。例如,AWS 提供 parameter store and MS Azure offers Azure Key vault。在这种情况下,所有参数都在启动时获取,我们所要做的就是重新启动应用程序。

所以通常人们只设置一个全局变量NODE_ENV(如proddev),根据NODE_ENV运行动态获取所有环境变量像 env $(node read-env-variables.js) node app.js.