13

提交.elasticbeanstalk/config.yml使用的项目的 git repo 内部是否是一种好方法eb deploy

我们想使用我们的 CI 进行部署,所以我们不能使用交互式eb init. 我们现在想的是在 config.yml 中定义我们的 dev、uat 和 prod(如果可能的话),并使用 eb deploy 指向那个环境。

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

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

4

2 回答 2

6
  1. 我们想使用我们的 CI 进行部署,所以我们不能使用交互式eb init

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

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

  1. 在使用 eb deploy 的项目的 git repo 中提交 .elasticbeanstalk/config.yml 是一种好方法吗?
  2. 有人可以解释如何在没有交互的情况下为多个环境部署 EB 吗?

根据设计,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. 在 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

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

于 2018-02-11T21:19:17.313 回答
5

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

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

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

于 2018-02-09T16:40:02.697 回答