如果有需求的可以看下我的小工具,用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