通过Git钩子实现网站的自动发布

在git应用的hooks目录中,创建post-receive文件,添加内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/sh

DEPLOY_PATH=写Web站点目录

将 master 以zip格式打包到指定文件(裸仓库中执行)

echo "git账号的密码" | sudo -S git archive --format zip --output file.zip master

将打包好的剪切到web目录

echo "git账号的密码" | sudo -S mv file.zip $DEPLOY_PATH

unset GIT_DIR

cd $DEPLOY_PATH

echo "git账号的密码" | sudo -S unzip -o file.zip

echo "git账号的密码" | sudo -S rm -rf file.zip

echo "git账号的密码" | sudo -S chown www:www -R $DEPLOY_PATH

保存后赋予可执行权限:

1
2
sudo chmod  +x  /path/to/test.git/hooks/post-receive
sudo chown -R git:git /path/to/test.git

这里使用echo “git账号的密码” | sudo -S Command 是为了解决出现remote…Operation Not Permitted问题。

然后通过Git Bash在本地对远程仓库进行增加或删除修改操作,接着执行git push相关命令之后,便可完成代码的自动部署。