前段時間我發現我們前端的Vue專案的提交到GitHub之後就會自動pull和build。於是,我就百度和谷歌了一下,瞭解了一下其背後的工作原理。順便也實現了一下。下面我就把實現的過程給大家羅列一下:
首先我現在GitHub上建立了一個專案,專案建立之後我們需要對該專案設定(Settings),裡面有一選項Webhooks,我們需要點選他,最後需要在這裡新增一個回撥地址
下面給大家看下回撥的資料大概是怎麼樣的,資料很長只擷取了一部分
最後我們需要在伺服器上建立PHP檔案來接收,因為我自己是PHP程式設計師,下面我就用PHP程式碼來給大家實現:
<?php
//git webhook 自動部署指令碼
$requestBody = file_get_contents("php://input"); //接收資料
if (empty($requestBody)) { //判斷資料是不是空
die('send fail');
}
$content = json_decode($requestBody, true); //資料轉換
//若是主分支且提交數大於0
if ($content['ref']=='refs/heads/master') {
$res = shell_exec('cd /var/www/html/site2/hook/ && git reset --hard origin/master && git clean -f && git pull 2>&1 && git checkout master'); //PHP函式執行git命令
$res_log = '-------------------------'.PHP_EOL;
$res_log .= ' 在' . date('Y-m-d H:i:s') . '向' . $content['repository']['name'] . '專案的' . $content['ref'] . '分支push'.$res;
file_put_contents("git-webhook.txt", $res_log, FILE_APPEND);//將每次拉取資訊追加寫入到日誌裡
}複製程式碼
最後當然還是需要給這個回撥程式新增執行許可權
執行命令 chmod 755 git-webhook-handler.php
最後
我這裡實現的專案的自動拉取,那麼如果同學需要其他操作,做稍微的修改就好了。如有錯誤請大家諒解並指出。