使用git實(shí)現(xiàn)代碼自動(dòng)部署

git.jpg

利用git來(lái)做版本控制和團(tuán)隊(duì)協(xié)作開(kāi)發(fā)是一個(gè)不錯(cuò)的選擇,這里做一下記錄。

實(shí)現(xiàn)原理

利用git的hook機(jī)制,當(dāng)每次用戶提交了代碼后觸發(fā)一個(gè)動(dòng)作去請(qǐng)求我們自己的服務(wù)器,服務(wù)器收到通知后將代碼重新拉取一下,實(shí)現(xiàn)代碼的自動(dòng)部署。

所需環(huán)境條件
  • 本地安裝 gitSourceTree客戶端
  • 服務(wù)端安裝 gitnodejs環(huán)境以及PM2管理器
  • 注冊(cè)碼云賬戶
具體實(shí)現(xiàn)
  1. 在服務(wù)端創(chuàng)建一個(gè)站點(diǎn),用來(lái)響應(yīng)hook動(dòng)作
    在這個(gè)站點(diǎn)目錄下用 npm安裝 koa
    然后新建一個(gè) index.js文件,和一個(gè) run.sh文件

index.js

const Koa = require('koa');
const shell = require('child_process');
const app = new Koa();

app.use(async (ctx) => {

    if(ctx.url === '/' && ctx.method === 'POST'){
        let postData = await parsePostData(ctx);
        if(postData.password=='定義你的密碼'){
          shell.execFile('./run.sh',function(error, stdout, stderr){
            console.log('stdout: ' + stdout);
            console.log('error: ' + error);
          });
          ctx.body = '執(zhí)行成功';
        }
    }else{
        ctx.body = '<h1>404<h1>';
    }

    function parsePostData() {
        return new Promise((resolve, reject) => {
            try {
                let postData = '';
                ctx.req.addListener('data', (data) => { // 有數(shù)據(jù)傳入的時(shí)候
                    postData += data;
                });
                ctx.req.on('end', () => {
                    let parseData = JSON.parse(postData);
                    resolve(parseData);
                });
            } catch (e) {
                reject(e);
            }
        });
    }
});
app.listen(3000, () => {
    console.log('http://127.0.0.1:3000');
});

run.sh

cd /www/wwwroot/www.XXXXXXXXXXX.com
git reset --hard origin/master
git pull
chmod -R 777 runtime

注意:目錄的權(quán)限設(shè)置

目錄截圖

mulu.png

這些都搞定之后,就在 PM2中把入口文件 index.js加進(jìn)去

WX20190313-165429.png

這樣我們的響應(yīng)程序就配置好了,接下來(lái)去碼云創(chuàng)建一個(gè)倉(cāng)庫(kù)。

  1. 新建倉(cāng)庫(kù),將倉(cāng)庫(kù)設(shè)置為私有,并添加開(kāi)發(fā)者。


    WX20190313-165848.png

    然后去你的服務(wù)器上生成一個(gè)SSH公鑰,添加到這里。

ssh-keygen -t rsa -C "郵箱地址"

三次回車后生成,然后用下面的命令查看

cat ~/.ssh/id_rsa.pub
WX20190313-170126.png

最后配置WebHooks,填寫(xiě)那個(gè)nodejs的站點(diǎn)地址


WX20190313-180239.png
  1. 再創(chuàng)建一個(gè)你項(xiàng)目的站點(diǎn),在目錄中用命令把倉(cāng)庫(kù)克隆下來(lái)。
    注意:一定要用這個(gè)SSH的方式


    WX20190313-182142.png

4.在本地用SourceTree拉取倉(cāng)庫(kù),修改一些文件,【提交】--> 【推送】
再回頭去看你服務(wù)器上的站點(diǎn),文件也跟著變動(dòng)了。

WX20190313-181523.png

好了,這樣就完成了。如果這篇文章對(duì)你有幫助的話,那就點(diǎn)一波關(guān)注和小心心吧!謝謝!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容