【问题标题】:Elastic Beanstalk: Deploy branch to envElastic Beanstalk:将分支部署到环境
【发布时间】:2016-04-20 15:05:47
【问题描述】:

我正在考虑将自定义托管 Rails 应用程序迁移到 Elastic Beanstalk。

我创建了一个简单的 Rails 应用程序并设法将其部署到 Elastic beanstalk 上。还有一些事情我仍然没有得到:

  1. 如何将分支或特定代码部署到我的应用?
  2. 部署的版本是来自上次提交还是我当前的工作区?
  3. 在 Beanstalk 上处理部署时的最佳做法是什么?

亚马逊有这个文档 (link),但它似乎已被弃用,我不知道如何在当前版本上执行此操作

elad:...$ eb --version EB CLI 3.7 (Python 2.7.1)

【问题讨论】:

    标签: ruby-on-rails amazon-web-services amazon-elastic-beanstalk


    【解决方案1】:

    考虑他们的选择的人可以看看AWS Code Pipeline。您定义特定的 GitHub 存储库分支。如果您将更改推送到该分支,代码管道会检测到它并启动管道进程。

    这与 Elastic Beanstalk 相关,因为在代码管道的第 4 步中,您可以部署到 AWS Elastic Beanstalk(以及其他)。

    【讨论】:

      【解决方案2】:

      我不确定我的解决方案是否是最佳实践,我只是在这里展示,欢迎所有 cmet 讨论。

      1. 如何将分支或特定代码部署到我的应用?
      • Beanstalk 支持使用EB command line 部署当前分支的最后一次提交(实际上是先上传到S3)
      • 从压缩文件部署,之后该文件实际上也更新到 S3 这是 Beanstalk 控制台中您的环境设置中的内容

      1. 部署的版本是来自上次提交还是我当前的工作区?
      • 自上次提交

      3.在 Beanstalk 上处理部署的最佳实践是什么?

      我的解决方案 #1: 定义将哪个分支部署到特定环境

      .elasticbeanstalk/config.yml

      # .....
      branch-defaults:
        develop:
          environment: mercury-dev-staging
        master:
          environment: mercury-dev
      # .....
      

      依靠这个配置,我总是切换到develop 分支部署到mercury-dev-staging 环境,master 一个用于mercury-dev。这将避免一些错误,例如将develop 分支部署到生产环境

      我的解决方案#2:定义一些别名命令以便快速部署:

      ~/.bash_profile(我使用的是 MacOS)

      alias deploy_production="eb deploy mercury-dev;"
      alias deploy_staging="eb deploy mercury-dev-staging;"
      

      现在我只需键入deploy_staging 进行分阶段部署,这很方便但有风险,因为您可能会将开发功能部署到生产环境。

      【讨论】:

      • 我使用选项 1。我喜欢它的简单性。
      • @Clarkie:有其他解决方案的想法吗?
      • @hieuPham 谢谢。我与 BeanStalk 战斗了几天,并认为它不够好 - 至少对于托管 Rails 应用程序而言。缺少 RVM / RBenv 或 gem 管理即使是小型 Rails 应用程序也会产生很多问题......对 AWS 来说太糟糕了,我非常失望。
      猜你喜欢
      • 2017-10-12
      • 2015-10-23
      • 2016-07-18
      • 1970-01-01
      • 2016-12-29
      • 2016-11-09
      • 2015-07-05
      • 2017-12-27
      • 2016-12-26
      相关资源
      最近更新 更多