EB 部署到多个环境
EB Deploy to multiple environments
我有相同的代码库(一个 git 存储库),我想上传到多个弹性 beanstalk 环境。有没有办法做到这一点,如果可以,我应该如何以可以推送到多个环境的方式设置我的存储库?
环境是站点的不同语言版本,我想在不同的 beantalks 中 运行。语言由环境参数设置。
回答我自己的问题。 AWS EB CLI 3+ 有一个很好的界面可以部署到多个环境。如果您将另一个环境添加到您的应用程序,您可以简单地使用
进行部署
eb deploy <environment-name>
您可以通过将如下配置添加到您的 .elasticbeanstalk/config.yml
文件,使 eb cli 引用来自不同分支的不同环境:
branch-defaults:
main:
environment: staging
production:
environment: production
在此示例中,当您从“main”分支 运行 eb deploy
时,它将部署到名为“staging”的环境中,而当您从“ production”分支,它将部署到名为“production”的环境中。
这种方法要求每个环境都有一个专用分支。将一个分支推送到多个环境,可以使用,在使用eb deploy
命令时指定一个分支:
eb deploy <environment_name>
如果指定版本标签,则可以在其他 eb deploy
命令中使用该版本:
eb deploy my-first-env -l version-1 && eb deploy my-second-env --version version-1
如果您正在使用 git 并且每个环境都有一个分支:
git checkout master
eb use <environment-name>
git checkout staging
eb use <environment-name>
git checkout worker
eb use <environment-name>
那你就可以
eb deploy
这将部署到当前分支的定义环境。
在幕后,这设置了 /.elasticbeanstalk/config.yml
中的关联
尽管如此,您仍然可以从任何分支 eb deploy <environment-name>
。
无需上传相同的源代码,我几乎没有采取任何解决方法。首先我部署我的“主”环境,然后检查它的版本,最后将这个版本部署到第二个环境。也可以根据当前 git 分支修改为使用不同的环境。
使用相同源代码的 2 个不同环境(应用程序)的示例:
我的“主”环境config.yaml
文件
branch-defaults:
main:
environment: environ1-prod
dev:
environment: environ1-dev
...
# this deploys environ1 based on config.yaml
eb deploy
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
APP_VERSION="$(eb status | sed -n 's/.*Version: //p')"
if [ "$BRANCH" = "main" ]; then
eb deploy environ2-prod --version $APP_VERSION
elif [ "$BRANCH" = "dev" ]; then
eb deploy environ2-dev --version $APP_VERSION
fi
我有相同的代码库(一个 git 存储库),我想上传到多个弹性 beanstalk 环境。有没有办法做到这一点,如果可以,我应该如何以可以推送到多个环境的方式设置我的存储库?
环境是站点的不同语言版本,我想在不同的 beantalks 中 运行。语言由环境参数设置。
回答我自己的问题。 AWS EB CLI 3+ 有一个很好的界面可以部署到多个环境。如果您将另一个环境添加到您的应用程序,您可以简单地使用
进行部署eb deploy <environment-name>
您可以通过将如下配置添加到您的 .elasticbeanstalk/config.yml
文件,使 eb cli 引用来自不同分支的不同环境:
branch-defaults:
main:
environment: staging
production:
environment: production
在此示例中,当您从“main”分支 运行 eb deploy
时,它将部署到名为“staging”的环境中,而当您从“ production”分支,它将部署到名为“production”的环境中。
这种方法要求每个环境都有一个专用分支。将一个分支推送到多个环境,可以使用eb deploy
命令时指定一个分支:
eb deploy <environment_name>
如果指定版本标签,则可以在其他 eb deploy
命令中使用该版本:
eb deploy my-first-env -l version-1 && eb deploy my-second-env --version version-1
如果您正在使用 git 并且每个环境都有一个分支:
git checkout master
eb use <environment-name>
git checkout staging
eb use <environment-name>
git checkout worker
eb use <environment-name>
那你就可以
eb deploy
这将部署到当前分支的定义环境。
在幕后,这设置了 /.elasticbeanstalk/config.yml
尽管如此,您仍然可以从任何分支 eb deploy <environment-name>
。
无需上传相同的源代码,我几乎没有采取任何解决方法。首先我部署我的“主”环境,然后检查它的版本,最后将这个版本部署到第二个环境。也可以根据当前 git 分支修改为使用不同的环境。
使用相同源代码的 2 个不同环境(应用程序)的示例:
我的“主”环境config.yaml
文件
branch-defaults:
main:
environment: environ1-prod
dev:
environment: environ1-dev
...
# this deploys environ1 based on config.yaml
eb deploy
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
APP_VERSION="$(eb status | sed -n 's/.*Version: //p')"
if [ "$BRANCH" = "main" ]; then
eb deploy environ2-prod --version $APP_VERSION
elif [ "$BRANCH" = "dev" ]; then
eb deploy environ2-dev --version $APP_VERSION
fi