php环境使用webhooks自动部署git源码

本文主要记录在不使用持续集成工具的情况下,简单的使用php完成git源码的拉取更新。

1.确保环境正常且可以使用

a)如果源码的运行账户不是root,是其他的账户,那么请确保在此账户下可以直接在命令行执行git pull

例如网站运行账户是www,那么在root下最好su www切换到www用户,然后cd到网站目录,执行git pull 看看在命令行下会不会有问题

一般问题无非是权限问题,git配置问题,参考本博客里面管理git配置的相关内容 为git添加账户,在home下创建用户目录

执行以下代码,测试看看

su www
cd /www/wwwroot/yoursite
git pull


b)记得开启php的禁用函数,因为要在php中执行shell命令,所以要关闭禁用函数

修改php.ini配置找到disable_functions,去掉shell_exec,exec

2.创建webhook的php文件内容如下:

$pwd ='xxx你的验证token或者密码';
$json = json_decode(file_get_contents('php://input'),true);
if(empty($json['password'])||$json['password']!==$pwd)//这里根据各个git平台的验证方式验证post的数据是否合法
{  
    exit('error password');
}
else
{
    $target = '你的网站目录';
    echo shell_exec("sudo -Hu www  cd $target && git reset --hard origin/master && git clean -f && git pull 2>&1 ");
    exit();
}

命令说明

git reset --hard origin/master 强制恢复版本到前一个稳定版
git clean -f 清理提交的更改
git pull 2>&1 拉取最新的版本到本地
本文由 Leo's Blog 创作,采用 署名-非商业性使用 2.5 中国大陆 进行许可。
如需转载、引用请署名作者且注明文章出处。
2017年07月11日 4198 浏览 评论 Linux Git 自动部署
上一篇:Linux操作拾遗——为用户添加Home目录 | 下一篇:acme.sh 安装 Let’ s Encrypt 通配符证书