码云gitee webhook实现

32F  2019/07/26 git linux



本文实现linux系统webhook(在远程仓库git push时自动拉取代码)


第一步:首先在码云-管理-Webhooks栏添加git push后需要调用的web(如 yourdomain/webhook.php ),这里就不详述了


第二步:在linux服务器准备web接受执行脚本,给下PHP-demo(webhook.php)

<?php
$token = 'password';
// 获取push数据内容的方法
$json_content = file_get_contents('php://input');
$data = json_decode($json_content, true);
if(empty($data['password']) || $data['password'] !== $token){
 //   exit('alnvalid token request');
}
shell_exec(" cd /var/www/html/ &&  sudo git pull  2>&1 "); //改成你自己的项目地址,执行脚本拉取git库

第三步: 执行完第二步后会发现在linux环境下可以执行,但是web却无法执行,是因为权限问题,这里再需要执行以下步骤

  1. 将web目录改成 www用户组,执行命令 : chown www:www /var/www/html
  2. 给www 增加 sudo 免密 执行权限 : vim /etc/sudoers 增加 www ALL=NOPASSWD:/usr/bin/git

经过以上步骤, 在任意其他远程仓库 执行 git push 后 会发现 服务器上自动执行了 git pull 命令(至于密码问题请自行解决,这里不做介绍)*


添加评论
全部回复
暂无回复