【问题标题】:Git deploy in autoscaling environment (Google Cloud Instance Group)自动扩缩环境中的 Git 部署(谷歌云实例组)
【发布时间】:2016-08-21 15:24:04
【问题描述】:

我希望使用 git hooks 或 webhook 之类的东西将新代码(推送到 BitBucket Repo)干净地部署到自动缩放环境(特别是 Google Cloud 实例组)中的多台机器上。

目前我正在使用 cron 在我的虚拟机上每分钟运行以下任务:

cd /var/www/mywebsite.com && git pull -q origin master && sudo composer update

显然这不是一种有效的方法。

将代码部署到多台机器最有效的方法是什么?

【问题讨论】:

    标签: git bitbucket google-cloud-platform


    【解决方案1】:

    有很多方法可以解决这个问题。这里有两种可能:

    使用消息代理

    一种可能性是我让你的所有实例订阅某种消息代理(etcd?rabbitmq?zmq pub socket?redis?),并拥有一个从 github 接收通知的 Web 服务,然后在您的所有正在运行的实例都将接收您的本地消息总线,然后可以在本地运行必要的git pull

    使用 ssh

    另一种解决方案是让 Web 服务接收来自 github 的通知,然后使用 ssh 登录到您的所有实例并运行 git 命令。您可以使用 Ansible 之类的工具来帮助自动化此过程。


    这两种解决方案显然都需要一个稳定的地址,您可以在该地址上运行从 github 接收通知的 Web 服务。这可能是一台专用机器,也可能是一个浮动 IP 地址,可以由您的任何一个实例提供服务。这些都是实现细节。

    其他可能性

    GitHub 可以直接与许多第三方服务集成。可能其中一些服务旨在帮助解决这个问题;我没有详细研究它们,但这可能值得进行一些研究。

    【讨论】:

    • 谢谢,SSH 方法是最直接的。我想这样做的方法是在一个单独的实例上拥有一个 PHP 文件,该文件由 Bitbucket 的 webhook 调用,列出一个组中的所有活动实例,SSH 进入每个实例,并在 git 目录中执行 git pull。
    猜你喜欢
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    相关资源
    最近更新 更多