部署到Web服务器& github只有一个命令

时间:2015-03-23 19:37:11

标签: git github ubuntu-server

我在文件夹/var/git/mysite.com.git中有一个带有虚拟仓库的Web服务器。我的hooks/post-receive看起来像这样:

#!/bin/sh GIT_WORK_TREE=/var/www/mysite.com/public_html git checkout -f

我运行git push live master(其中live是生产服务器上我的遥控器的名称),后接收正确执行,并将文件放在Web根目录中。然后我必须运行git push origin master将副本推送到我的github(用于备份/审查)。我可能会以相反的顺序执行这些操作,因为它完成了同样的事情。

有没有用一个命令完成这两个步骤?看起来我可以把第二个git push命令放在post-receive或其他地方(在Github上?)将repo推送到两个远程位置但是我还没有找到解决方案。

2 个答案:

答案 0 :(得分:1)

我用于Jenkins这样的部署任务。它是一个非常好的系统,可以在部署之前运行任务并检查代码。

https://jenkins-ci.org

另一个解决方案是Ansible在您的服务器上运行代码(在所有服务器上)与Jenkins的组合非常好。

http://www.ansible.com/home

或者您可以编写一个包含所有命令的简单shell脚本,并在钩子中调用它。但我更喜欢部署系统来运行某些任务并在生产之前检查我的代码。

答案 1 :(得分:1)

您可以将以下行添加到~/.gitconfig文件中,以使用别名来实现此目的:

[alias]
  push-live = !git push live master && git push origin master

然后你可以运行git push-live,推送到两个遥控器。