通过webhook自动部署git项目

部署脚本 ci.sh:

1
2
3
4
#!/bin/sh
cd /www/project/ #项目目录
sudo unset GIT_DIR
sudo git pull

webhook(以php为例):

1
2
3
<?php
/* check you auth */
system("sudo /xxx/ci.sh 2>&1"); # xxx表示你ci.sh文件所在目录

注意 1 :git公钥归属的问题会导致你的 git pull 命令无法执行,需要把当前web服务器的用户权限提高

1
2
3
4
su - # 进入超级用户模式
chmod u+w /etc/sudoers #添加文件的写权限
vim /etc/sudoers # 编辑文件, 找到这一 行:"root ALL=(ALL) ALL"在起下面添加"xxx ALL=(ALL) NOPASSWD:/usr/bin/git"(这里的xxx是你的web服务器的用户,如nginx默认的www),然后保存退出。
chmod u-w /etc/sudoers

注意 2 : 出现.git/FETCH_HEAD没有权限 需要提升.git目录权限

chmod -R 777  .git
关注作者公众号,获取更多资源!
赏作者一杯咖啡~