手摸手教你搭建簡單的 Git 的程式碼自動釋出

Ccccc發表於2019-11-19

歡迎你來到閱讀我的文章

1. 為什麼我要弄這個?

emmmm,因為有個自己的專案每次釋出到線上,都要登入一下伺服器,然後pull一下程式碼,執行一些專案初始化的命令(諸如:git submoudle update,php artisan cache:clear,composer 之類)。感覺繁瑣。

如果程式碼釋出的時候,系統能把這些工作都自動搞掂就好了。所以就有了這個。

2. 環境準備

  1. github賬號(這裡用github做演示)
  2. node環境
  3. pm2

3. 大致流程描述

我們在 github 的專案上設定一個勾子。這個勾子有什麼用呢?作用就是在我們 push 程式碼的時候,github 會觸發這個勾子,向我們的伺服器發起一個通知。然後我們在伺服器收到這個通知,就執行我們們事先設定的命令指令碼。至於伺服器如何捕獲到這個通知呢?我們伺服器事先會開啟一個服務,假如埠是 3000 的來監聽這個通知。只要在設定勾子的時候往這個埠設定就行了。

4.搞起來

當你有了以上環境之後,就可以開搞了。

1. 新建一個專案 mkdir koa

2. 進入到該專案執行 npm install koa && npm install koa-bodyparser

3. 新建 index.js 和 run.sh 檔案 並編輯以下程式碼

index.js
const Koa = require('koa');
const shell = require('child_process');
const app = new Koa();
const bodyParser = require('koa-bodyparser');
app.use(bodyParser());

app.use(async (ctx) => {

    if(ctx.url === '/' && ctx.method === 'POST'){
        let postData = ctx.request.body;

          shell.execFile('./run.sh',function(error, stdout, stderr){
            console.log('stdout: ' + stdout);
            console.log('error: ' + error);
          });
          ctx.body = '執行成功';
    }else{
        ctx.body = '<h1>404<h1>';
    }

});
app.listen(3000, () => {
    console.log('http://127.0.0.1:3000');
});
run.sh
cd /home/www/你的專案
git reset --hard origin/master
git pull
git submodule update

4. 使用pm2進行程式管理 pm2 start index.js 然後執行 pm2 list 檢視。

當你看到下面資訊,就說明服務已經開啟了。你可以訪問一下對應埠,會得到一個404的提示頁面。

如果過程出現錯誤,可以執行 pm2 logs 檢視錯誤資訊。更多pm2命令
手摸手教你搭建簡單的git的程式碼自動釋出

5. github 專案的設定:前往你的 github 專案點選 Settings -> Webhooks 設定勾子。

Payload URL 填寫剛剛開啟的服務地址。

Content type 選擇 x-www-form-urlencoded

Secret 隨便設定一個就可以(這裡我沒弄驗證)

結語

你往了專案push一下程式碼,就可以實現自動釋出了.

手摸手教你搭建簡單的 Git 的程式碼自動釋出

最後,如果你在這個過程遇到問題,可留言。

如有錯誤,歡迎指出.

如果喜歡,點個贊再走吧.

相關文章