【问题标题】:AWS S3 deploy sync with GITAWS S3 部署与 GIT 同步
【发布时间】:2017-06-27 06:12:17
【问题描述】:

我在 GitLab 上托管了一个私人 git 存储库。

我的堆栈是:

  • 一个 Rails json REST api 托管在 Heroku 上
  • 一个与 AWS S3 上托管的 json api 通信的单页应用程序

通过git push heroku master 将代码推送到后端很简单。 但是我没有前端的自动化系统。我必须拉取、构建静态文件并将其上传到 s3 存储桶。

我只需要一些自动化系统来将我的前端应用程序推向生产,就像​​git push s3 master 一样简单。

我知道有一些像 jenkins 这样的持续集成,但是维护一个专用服务器只是为了管理我的部署系统对我来说听起来太过分了。我的直觉是有一些服务我找不到只是谷歌搜索

【问题讨论】:

  • 你可以使用 gitlab-ci 来达到这个目的,或者例如 semaphore ci

标签: git amazon-s3 deployment single-page-application


【解决方案1】:

尝试使用 aws cli 工具,然后同步整个 git 文件夹:

aws s3 sync git_folder s3://bucket_name/folder/

【讨论】:

  • 这并不能解决我的问题。因为我正在与更多的人一起工作,并且不想冒着部署非同步更改的风险。例如:1:有人部署了一些东西 2:我进行了更改并忘记了拉动,或者他忘记了推送 3:我使用这个 aws 命令进行部署 4:现在我丢失了他的更改
  • 嗯,这正是您使用 Jenkins 之类的工具来执行此操作的原因。如果坚持从开发者机器上部署,那么构建一个小脚本来处理它:
  • 1) 将开发分支签出到某个新文件夹 2) 同步到 S3 我假设您在功能分支中工作并且仅从单个分支部署。
【解决方案2】:

如果您编写自己的服务器端挂钩,您可以实现这一点。 git 中的钩子是在某些事件发生时触发/运行的脚本。

因此,如果我正确理解您的问题,您可以在推送到 s3 的主分支后作为接收后挂钩来构建前端并将其上传到 s3。预接收挂钩也以相同的方式工作,它提供了根据您定义的内容拒绝推送的选项。

您可以在此处找到文档:https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

【讨论】:

    猜你喜欢
    • 2021-05-12
    • 2016-12-29
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    相关资源
    最近更新 更多