【发布时间】:2019-04-30 04:53:06
【问题描述】:
我从 .env 文件中获取特定于环境的变量(我正在使用 dotenv 包)。此文件不受版本控制。
使用代码管道阶段 codebuild 如何创建此 .env 文件及其内容?
我在想,我必须使用 buildspec 来创建内容并将其添加到 .env 文件,但不知道如何?
谢谢
【问题讨论】:
标签: amazon-web-services aws-codepipeline aws-codebuild
我从 .env 文件中获取特定于环境的变量(我正在使用 dotenv 包)。此文件不受版本控制。
使用代码管道阶段 codebuild 如何创建此 .env 文件及其内容?
我在想,我必须使用 buildspec 来创建内容并将其添加到 .env 文件,但不知道如何?
谢谢
【问题讨论】:
标签: amazon-web-services aws-codepipeline aws-codebuild
所以这实际上是一个简单的脚本,采用第一个答案的第二个选项,您可以将以下内容添加到您的 buildspec.yml:
phases:
pre_build:
commands:
- printenv > .env
shell 脚本 printenv > .env 是将所有进程 env 输出到文件所需的全部内容。
【讨论】:
我的建议是摆脱 dotenv 并使用真实的环境变量。
dotenv 的问题在于它只是在您的node 进程中模拟process.env。它并没有真正为您修改环境变量。它们在您的 node 进程之外不可用。
我会改用direnv 并将您的.env 文件替换为.envrc 用于本地开发。
对于 CI 和生产环境,环境变量现在已在您的 CodeBuild 项目中定义,因此不需要 .envrc 文件。
从另一个角度了解更多信息,请参阅this related answer。
如果您希望继续使用dotenv,您有多种选择:
.env 文件存储在 S3 中,并在构建过程中检索它。.env 文件。我敢肯定还有其他人,但它们对我来说都是 hacky。
【讨论】: