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版本) 暫未更新

<?php   
$secret = ''; #在GitHub上填寫的secret
//獲取http 頭
$headers = array();
//Apache服務器才支持getallheaders函數
if (!function_exists('getallheaders')) {
    foreach ($_SERVER as $name => $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上添加webhook
配置webhook

切記,如果你的網站是免費的https配置,請將這個禁用掉,否則你會后悔不已

禁用SSL驗證

Coding中配置Webhook

Coding中添加webhook
配置webhook
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容