将 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 迁移

text 将所有远程分支从Github拉到您当地的环境

如何从 github 中删除节点模块(发布分支)

从 IDEA 将项目共享到 GitHub:如何将所有项目添加到存储库到名为“lab1”的分支中

ThinkSNS+ 基于 Laravel master 分支,从 1 到 0,再到 0.1