Elastic Beanstalk:将分支部署到环境
Posted
技术标签:
【中文标题】Elastic Beanstalk:将分支部署到环境【英文标题】:Elastic Beanstalk: Deploy branch to env 【发布时间】:2016-04-20 15:05:47 【问题描述】:我正在考虑将自定义托管 Rails 应用程序迁移到 Elastic Beanstalk。
我创建了一个简单的 Rails 应用程序并设法将其部署到 Elastic beanstalk 上。还有一些事情我仍然没有得到:
-
如何将分支或特定代码部署到我的应用?
部署的版本是来自上次提交还是我当前的工作区?
在 Beanstalk 上处理部署时的最佳做法是什么?
亚马逊有这个文档 (link),但它似乎已被弃用,我不知道如何在当前版本上执行此操作
elad:...$ eb --version
EB CLI 3.7 (Python 2.7.1)
【问题讨论】:
【参考方案1】:考虑他们的选择的人可以看看AWS Code Pipeline。您定义特定的 GitHub 存储库分支。如果您将更改推送到该分支,代码管道会检测到它并启动管道进程。
这与 Elastic Beanstalk 相关,因为在代码管道的第 4 步中,您可以部署到 AWS Elastic Beanstalk(以及其他)。
【讨论】:
【参考方案2】:我不确定我的解决方案是否是最佳实践,我只是在这里展示,欢迎所有 cmet 讨论。
Beanstalk 支持使用EB command line 部署当前分支的最后一次提交(实际上是先上传到S3) 从压缩文件部署,之后该文件实际上也更新到 S3 这是 Beanstalk 控制台中您的环境设置中的内容如何将分支或特定代码部署到我的应用?
自上次提交部署的版本是来自上次提交还是我当前的工作区?
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 来说太糟糕了,我非常失望。以上是关于Elastic Beanstalk:将分支部署到环境的主要内容,如果未能解决你的问题,请参考以下文章
将 Laravel 应用程序从 GitHub 分支自动部署到 AWS EC2 或 Elastic Beanstalk
同时部署到 Amazon Elastic Beanstalk 上的多个环境
将 react 应用的 docker 镜像部署到 Elastic beanstalk
将 Python 和依赖项部署到 Elastic Beanstalk