在 Elastic Beanstalk 中提交 .elasticbeanstalk/config.yml

Commit .elasticbeanstalk/config.yml in Elastic Beanstalk

在使用 eb deploy 的项目的 git 存储库中提交 .elasticbeanstalk/config.yml 是一种好方法吗?

我们想使用 CI 进行部署,因此我们无法使用交互式 eb init。 我们现在正在考虑的是在 config.yml(如果可能的话)中定义我们的 dev、uat 和 prod,并使用 eb deploy 指向该环境。

我们看到我们可以在 ebcli 版本 2 中使用所有必要的参数执行 eb init 但在版本 3 中就不行了吗?所以好像方法变了?

有人可以解释如何在没有交互的情况下为多个环境部署 EB 吗?

EB CLI 实际上是为了在工作站上使用。我认为您最好使用 AWS CLI 编写 CI 脚本。

使用 eb deploy 的部署会将您的代码存档在 S3(或 CodeCommit)中,创建新的应用程序版本,然后使用新版本标签更新环境。 AWS CLI 命令支持所有这些操作。

或者,您可以使用 boto3 在 Python 中编写自己的部署脚本。这也是一个简单的选择。 EB CLI 基本上就是这样。

  1. We want to deploy using our CI and so we can not use the interactive eb init

您可以按如下方式抑制交互模式:

eb init --platform <platform-name> --region <region-name> <application-name>

  1. Is it a good approach to commit the .elasticbeanstalk/config.yml inside the git repo of a project which uses eb deploy?
  2. Can someone explain how to deploy EB for multiple environments, without interaction?

根据设计,EBCLI 避免提交 .elasticbeanstalk/ 目录,因为它可能包含特定于开发人员的信息,当提交到 VC 时可能会造成混淆。所以,最好避免使用 VC。您可以自由地将其提交给版本控制。确保此处没有敏感信息。日志和保存的配置通常存储在 .elasticbeanstalk/.

  1. 您可以将 .elasticbeanstalk/config.yml 文件的相关部分复制到根级文件中,CI 可以从中读取要使用的环境名称等信息。
  2. 在本地,您可以创建一个预提交 Git 挂钩,它将默认环境名称从 .elasticbeanstalk/config.yml 文件读取到根级文件中——让我们称之为 .environment_config.sh.它可以是像 export BEANSTALK_ENVIRONMENT_NAME=<environment name from .elasticbeanstalk/config.yml>
  3. 这样简单的语句
  4. 在 CI 服务器上:

    3.1。确保 PWD 是 git init-ed。 Jenkins 等系统通常 git init-ed 具有必要的分支,因此 CI 此时可以简单地 source .environment_config.sh 并加载要部署的环境名称。

    3.2。 eb init --platform <platform-name> --region <region-name> <application-name>

    3.3。 eb use $BEANSTALK_ENVIRONMENT_NAME

    3.4。 eb deploy

(您可以通过执行 eb deploy $BEANSTALK_ENVIRONMENT_NAME 来组合 3.3. 和 3.4.;我只是想演示 eb use 的用法)