【问题标题】:Deploy to multiple servers same time同时部署到多台服务器
【发布时间】:2016-08-08 18:56:58
【问题描述】:

我有 4 台服务器,一台用于负载平衡(Nginx 反向代理)和 3 台 nodejs(上游服务器)。

我想同时将代码从 bitbucket 部署到这 3 台服务器,我该如何管理它? 我可以在这 3 台服务器上安装 jenkis 并进行部署,但有更好的解决方案吗?我可以在负载平衡器服务器上安装 jenkins 并从中进行部署吗?

【问题讨论】:

  • Git 现在支持推送到多个 repo,参见 stackoverflow.com/questions/14290113/…
  • 您可以使用主从设置,在其中推送到主服务器。 master 将启动 3 个 slave 作业(每个服务器上的每个 slave)。

标签: node.js git jenkins deployment


【解决方案1】:

你必须编写脚本来为你做这件事。
该脚本可以是任何语言的 shell 脚本,也可以使用 Jenkins 为您完成。

您不需要在每台服务器上安装 Jenkins,您只需要一个 git 脚本,它将其推送到您的服务器,或者您的服务器将从服务器中提取更改。

【讨论】:

  • 所以我应该编写脚本来从 bitbucket 中提取更改,而不是运行几个命令(npm install 和 e.tc.)并将此脚本放在每个服务器上并手动调用它?我对吗?我想要手动部署(bitbucket push 更改后不自动部署)
  • 是的,或者你也可以用 Jenkins 来做,这取决于你怎么做。
【解决方案2】:

最好的解决方案是选择一个您推送到的主存储库,然后在该服务器中安装一个挂钩,自动将所有传入的内容推送到其他服务器。

$ cat .git/hooks/post-receive
#!/bin/bash

IFS=' '
while read local_ref local_sha remote_ref remote_sha
do

  echo "$remote_ref" | egrep '^refs\/heads\/[A-Z]+-[0-9]+$' >/dev/null && {
    ref=`echo $remote_ref | sed -e 's/^refs\/heads\///'`
    echo Forwarding feature branch to other repository: $ref
    git push -q --force other_repos $ref
  }

done

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-26
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 2015-02-15
    • 2015-05-26
    相关资源
    最近更新 更多