菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
0
0

手摸手教你搭建简单的 Git 的代码自动发布

原创
05/13 14:22
阅读数 434

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命令

5. github 项目的设置:前往你的 github 项目点击 Settings -> Webhooks 设置勾子。

Payload URL 填写刚刚开启的服务地址。

Content type 选择 x-www-form-urlencoded

Secret 随便设置一个就可以(这里我没弄验证)

结语

你往了项目push一下代码,就可以实现自动发布了.

发表评论

0/200
0 点赞
0 评论
收藏
为你推荐 换一批