GitHub上專案自動拉取和部署到伺服器

?發表於2017-09-20

前段時間我發現我們前端的Vue專案的提交到GitHub之後就會自動pull和build。於是,我就百度和谷歌了一下,瞭解了一下其背後的工作原理。順便也實現了一下。下面我就把實現的過程給大家羅列一下:

首先我現在GitHub上建立了一個專案,專案建立之後我們需要對該專案設定(Settings),裡面有一選項Webhooks,我們需要點選他,最後需要在這裡新增一個回撥地址

GitHub設定
GitHub設定

下面給大家看下回撥的資料大概是怎麼樣的,資料很長只擷取了一部分

回撥內容
回撥內容

最後我們需要在伺服器上建立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

最後

我這裡實現的專案的自動拉取,那麼如果同學需要其他操作,做稍微的修改就好了。如有錯誤請大家諒解並指出。

相關文章