Elastic Beanstalk:将分支部署到env

时间:2016-01-15 03:36:42

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

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

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

  1. 如何将分支或特定代码部署到我的应用程序?
  2. 部署的版本是上次提交还是我当前的工作区?
  3. 在Beanstalk上处理部署时的最佳做法是什么?
  4. 亚马逊有这个文件(link),但它似乎已被弃用,我无法确定如何在当前版本上进行此操作

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

2 个答案:

答案 0 :(得分:2)

我不确定我的解决方案是否是最佳做法,我只是在这里展示,欢迎所有评论。

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

enter image description here

enter image description here

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

3.在Beanstalk上处理部署时的最佳做法是什么?

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

.elasticbeanstalk/config.yml

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

依靠此配置,我总是切换到develop分支以部署到mercury-dev-staging env,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 :(得分:0)

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

这与 Elastic Beanstalk 相关,因为在 Code Pipeline 的第 4 步,您可以部署到 AWS Elastic Beanstalk(以及其他)。

AWS CodePipeline