使用一个命令部署到 Web 服务器和 github



我有一个web服务器,在文件夹/var/git/mysite.com.git中有一个裸repo。我的hooks/post-receive看起来像这样:

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

我运行git push live master(其中live是我在生产服务器上的远程设备的名称),postreceive会正确执行,并将文件放在web根目录中需要的位置。然后,我必须运行git push origin master将副本推送到我的github(用于备份/审查)。我可以按照相反的顺序来做这些事情,因为它完成了同样的事情。

有没有用一个命令同时完成这两个步骤?我似乎可以把第二个git push命令放在postreceive或其他地方(在Github上?),将回购推送到两个远程位置,但我还没有找到解决方案。

您可以将以下行添加到~/.gitconfig文件中,以使用别名实现这一点:

[别名]push live=!git推送直播主机

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

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

https://jenkins-ci.org

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

http://www.ansible.com/home

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

最新更新