利用Git Hooks自动部署网站

git作为代码管理系统非常方便,但是能否在push到git上的同时把代码部署到网站服务呢?答案就是使用git hooks。

在git的远程仓库中,在xxx.git仓库的目录下又一个hooks目录,可以看到该目录下有很多sample的脚本了。为了实现我们的功能,建立一个post-receive文件如下:

#!/bin/bash
while read oldrev newrev ref
do
    if [[ $ref =~ .*/master$ ]];
    then
        echo "Master ref received.  Deploying master branch to production..."
        git --work-tree=/var/www/html --git-dir=/home/demo/proj checkout -f
    else
        echo "Ref $ref successfully received.  Doing nothing: only the master branch may be deployed on this server."
    fi
done

注意该文件的用户权限以及执行权限chmod +x post-receive.

为了方便查看脚本执行状态,文件中写几行echo是很有必要的;

另外需要注意work-tree的目录是事先创建git clone的本地仓库,不是仓库的话代码会执行失败;

为了安全起见,把web目录作为仓库目录的子目录,这样在web目录中就无法访问.git目录了。

Add a Comment

电子邮件地址不会被公开。 必填项已用*标注

3 × 3 =