将 Laravel 应用程序从 GitHub 分支自动部署到 AWS EC2 或 Elastic Beanstalk
Posted
技术标签:
【中文标题】将 Laravel 应用程序从 GitHub 分支自动部署到 AWS EC2 或 Elastic Beanstalk【英文标题】:AutoDeploy a Laravel app from GitHub branch to AWS EC2 or Elastic Beanstalk 【发布时间】:2017-12-05 00:04:27 【问题描述】:我正在尝试将 Laravel 应用程序从 Github 分支自动部署到 AWS EC2 或 Elastic Beanstalk(首选),但我还没有找到正确的解决方案,我遵循的教程之一是下面的教程。有人对此有解决方案吗?
提前谢谢你!
https://aws.amazon.com/blogs/devops/building-continuous-deployment-on-aws-with-aws-codepipeline-jenkins-and-aws-elastic-beanstalk/
【问题讨论】:
【参考方案1】:您可以通过以下步骤做到这一点
-
使用 Github 插件设置 Jenkins
InstallAWS Elastic Beanstalk CLI
创建具有 Elastic Beanstalk 部署权限的 IAM 用户并将访问密钥添加到 AWS CLI(如果 Jenkins 在 EC2 内运行,您可以创建具有所需权限的角色并附加到 EC2 实例,而不是创建用户)李>
在 Jenkins 项目中,将分支克隆到项目目录并在 shell 脚本中执行 eb deploy 以将其部署到 Elastic Beanstalk。 (当新代码推送到分支时,您可以使用构建触发器自动执行此操作)
或者还有其他方法,例如
Blue/Green deployment with Elastic Beanstalk 将 Gitbranch 部署到 specific environment。 使用AWS CodeStar 使用模板设置部署(在内部它将使用 AWS 代码管道、CodeDeploy 等)【讨论】:
【参考方案2】:使用 eb deploy
的替代方法是使用 Jenkins AWS Beanstalk Publisher 插件 https://wiki.jenkins.io/display/JENKINS/AWS+Beanstalk+Publisher+Plugin
这可以通过转到管理 Jenkins > 管理插件 > 搜索 AWS Beanstalk Publisher 来安装。根对象是您要部署到 EB 的项目的 zip 文件。 Build Steps 可以执行一个步骤来压缩你的 repo 中的文件。
-
您仍然需要填写 Jenkins 作业配置的
Source Control Management
部分。这必须包含您的 GitHub 存储库的 URL,以及用于访问它们的凭据。
执行 Shell 作为构建步骤的一部分,将要部署到 EB 的存储库中的文件压缩。例如,zip -r myfiles.zip *
将压缩 GitHub 存储库中的所有文件。
使用 AWS Beanstalk Publisher Plugin 并指定 myfiles.zip
作为根对象(文件/目录)的值。
【讨论】:
以上是关于将 Laravel 应用程序从 GitHub 分支自动部署到 AWS EC2 或 Elastic Beanstalk的主要内容,如果未能解决你的问题,请参考以下文章
与master合并分支时app js出现合并冲突(laravel + vue)
Laravel 中的 Github Oauth 令牌 - 从 BitBucket 迁移