1. 程式人生 > >ubuntu伺服器中搭配碼雲git自動更新鉤子

ubuntu伺服器中搭配碼雲git自動更新鉤子

本次主要以配置碼雲git的自動pull鉤子記錄與分享:

  • 一臺 Ubuntu18.10 的伺服器

由於本人最近心血來潮買了一臺伺服器,開一個新專案,所以作為此次記錄與分享

  • 搭配環境 PHP7.2 mysql Nginx Git

這裡不講解如何搭配環境,如有需要 看這裡 https://blog.csdn.net/qq_14824885/article/details/80752013

  • 配置

由於我的專案是私有的,所以這裡有幾點要注意

git config --global user.name ‘使用者名稱’ #配置使用者名稱
git config --global user.email '郵箱‘ #配置郵箱
git config --global credential.helper store #記住賬號密碼
cd /www/
git clone http://{使用者名稱}:{密碼}@gitee.com/name/project.git #必須要用這種形式進行克隆專案

以下是pull時候呼叫的php程式碼

public function gitPull(Request $request)
    {
        // 接收的密碼資訊 由於我是寫在專案裡面的 用的是ThinkPHP 所以接受資訊的方式有點不同,根據實際情況修改
        $password = $request->param('password');

        $savePath = "/www/ordering_system";
        $gitPath = "origin master";
        //自定義字串掩碼 用於驗證
        $access_token = '密碼';
        $client_token = $password;

        //驗證token 有錯就寫進日誌並退出
        if ($client_token !== $access_token) {
            echo "error password";
            exit(0);
        }

        //執行shell命令並把返回資訊寫進日誌
        exec("cd {$savePath} && /usr/bin/git pull {$gitPath} 2<&1 ",$output);
//        $output = shell_exec("cd {$savePath} ; git pull {$gitPath} 2<&1");
        trace($output, "--------自動更新檔案--------");
        trace(date('Y-m-d H:i:s',time()), "--------自動更新檔案--------");
        echo json_encode($output);

    }

可以開啟地址試試 以下是效果
在這裡插入圖片描述

之後試試看,如果發現git許可權不足,就是因為你的環境PHP中不是跟你的專案同一個使用者組,所以需要更改PHP啟動的服務使用者和你的專案一致,或許是相同使用者組
https://blog.csdn.net/qq_14824885/article/details/84197579

之後進入到碼雲的相關專案詳情中 新增一個
填寫 如果push操作的時候 就呼叫的 url地址 然後還有密碼 是上邊程式碼裡面需要驗證獲取的
在這裡插入圖片描述
在這裡插入圖片描述

在composer 專案的時候發生了一個錯誤

proc_open(): fork failed - Cannot allocate memory

據說是交換空間不足,需要建立交換空間。解決方案:

sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo /sbin/mkswap /var/swap.1
sudo /sbin/swapon /var/swap.1