使用 codepipeline 为每个 beantalk 实例部署一个带有自定义 .env 的分支

问题描述 投票:0回答:0

我有一个 Node express 服务器,它使用

dotenv
将变量从
.env
加载到服务器中,例如
SERVER_URL

我有两个环境,

qa
production

我的仓库中有两个分支;他们使用 AWS CodePipeline 将分支

qa
放到
qa
弹性豆茎上,将
production
放在
production
EB 上。

在我的主分支中我有两个 .env 文件

.env
.env.qa
.env.production

在我的本地机器上,它加载 .env,就像在这两个 EB 实例上一样,但是……

我希望它用 .env.qa 的内容替换 .env 如果它是 qa 和 .env.production 重命名或替换 .env

我尝试将 mv-f 作为 eb.config 文件,但我使用的是 sh 文件来执行此操作,但由于路径不同而无法使其工作 abd 这是一个 10 分钟的构建来尝试每个配置更改以实现它工作。

将变量保存在分支中、设置 CD 并理想地使用不同的 .env 文件的最佳方法是什么?

mv -f 的命令我被告知需要权限,但它让我不知道脚本等是否需要权限。

我的环境文件在根目录中。

解决这个问题的最佳方法是什么?

(一次尝试是)

.ebextensions/eb.config
container_commands:
  set_env_vars:
    command: "source envconfig.sh"

在 .ebextensions/envconfig.sh 中

#!/bin/bash

if [ "$NODE_ENV" = "production" ]
then
  mv -f .env.production .env
elif [ "$NODE_ENV" = "qa" ]
then
  mv -f .env.qa .env
else
  mv -f .env.default .env
fi

我的 .env.qa、.env.production、.env.default 等都在根目录中(package.json 所在的位置)

amazon-web-services amazon-elastic-beanstalk sh
© www.soinside.com 2019 - 2024. All rights reserved.