GitHub、Coding的webhook配置(多项目部署)

如果有需求的可以看下我的小工具,用go写的,直接放服务器上运行就行了。
地址:https://github.com/HimiHL/webhook_go

webhook配置

之前就配置过Coding的Webhook,但是由于Linux上的权限问题没有设置成功;下面记录一下我的Webhook配置。

准备钩子文件

该文件,应该把权限给root

chown -R root:root git.sh

git.sh 请为该文件赋予777权限,否则无法执行

#!/bin/bash
WEB_PATH=$1 #这个代表项目所在目录,就是要生产的目录
WEB_USER='www' #用户, Nginx和Apache一般都是这个用户
WEB_USERGROUP='www' #用户组
 
echo "Start pull" #UI,这个无所谓
cd $WEB_PATH #进入目录
echo "pulling source code .. " #UI
sudo git reset --hard origin/master #回到这个版本
sudo git clean -f #清除文件
sudo git pull #拉文件下来
sudo git checkout master #回到master分支
echo "changing permissions .."
sudo chown -R $WEB_USER:$WEB_USERGROUP $WEB_PATH #防止pull下来过后出现权限问题,
echo "Finished."

hook.php (Coding版本)

$json=json_decode(file_get_contents('php://input'),true); #获取传送过后的数据,并转成JSON
$users = array(
    'your token' => array(
        'path' => 'your project path',
        'name' => '随便写的以便标识项目'
    ),
    
);
if(!empty($json['token']) && array_key_exists($json['token'] , $users) !== false)
{
    $path = $users[$json['token']]['path']; 
    if(!is_dir($path)){
        header("HTTP/1.1 404 Not Found");  
        header("Status: 404 Not Found");
        exit;
    }
    echo shell_exec('./git.sh "'.$path.'"');
}else{
    header("HTTP/1.1 404 Not Found");  
    header("Status: 404 Not Found");
    exit;
}

hook.php (GitHub版本) 暂未更新

 $value) {
        if (substr($name, 0, 5) == 'HTTP_') {
            $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
        }
    }
}else
{
    $headers = getallheaders();
}
//github发送过来的签名
$hubSignature = $headers['X-Hub-Signature'];
list($algo, $hash) = explode('=', $hubSignature, 2);

// 获取body内容
$payload = file_get_contents('php://input');

// 计算签名
$payloadHash = hash_hmac($algo, $payload, $secret);
$target = "/home/wwwroot/cxzfbAdmin";
// 判断签名是否匹配
if ($hash === $payloadHash) {
           //调用shell
    echo shell_exec("./git.sh");
}else{
    http_response_code(404);//返回404,反正都执行了返回404也无所谓
}

GitHub中配置Webhook

GitHub、Coding的webhook配置(多项目部署)_第1张图片
GitHub上添加webhook
GitHub、Coding的webhook配置(多项目部署)_第2张图片
配置webhook

切记,如果你的网站是免费的https配置,请将这个禁用掉,否则你会后悔不已

GitHub、Coding的webhook配置(多项目部署)_第3张图片
禁用SSL验证

Coding中配置Webhook

GitHub、Coding的webhook配置(多项目部署)_第4张图片
Coding中添加webhook
GitHub、Coding的webhook配置(多项目部署)_第5张图片
配置webhook

你可能感兴趣的:(GitHub、Coding的webhook配置(多项目部署))