git hook实现代码自动部署

参考http://blog.csdn.net/u010837612/article/details/70825225?utm_source=itdadao&utm_medium=referral
登录Linux的 -bash-4.2$ 问题 : http://blog.csdn.net/fly43108622/article/details/48155953

原理与流程

git用户执行git push操作
远程仓库发现有用户执行了push操作,就会执行一个脚本post-receive(钩子)
在post-receive脚本中,将git仓库的代码拷贝到web站点目录下

执行钩子

git仓库和git裸仓库的钩子所在位置不同。

git普通仓库钩子在.git/hooks/中
git裸仓库钩子在hooks/中
钩子要做的事就是将代码从仓库中拷贝到web目录,有两种方式:

在web目录中,将git仓库的代码克隆过来:git clone xxxxx,需要部署代码的时候,执行git pull即可将代码同步过来了。
将git仓库中的代码打包,然后解压到web目录下

实现:

第一种方式实现:

在上述hooks目录中,创建post-receive文件,内容如下

#!/bin/sh
DEPLOY_PATH=/home/wwwroot/default/myproject/

unset  GIT_DIR #这条命令很重要
cd $DEPLOY_PATH
git reset --hard
git pull
chown www:www -R $DEPLOY_PATH

如果是远程代码部署可以使用ssh来进行远程的部署操作

ssh root@120.27.234.99 -i /home/git/test_privatekey "cd /var/www/html/admin; sh update.sh"

猜你喜欢

转载自blog.csdn.net/b1303110335/article/details/79358003