使用gitee的webhook自动部署node项目

使用gitee的webhook自动部署node项目

技术杂谈小彩虹2021-08-26 21:31:36130A+A-

1. 在项目中新建一个webhook

1.png

url地址为: https://vue3-hooks.liuxsh.top/webhook
webhook密钥为: myhashsecret

2. 创建webhook.js

// webhook.js
var http = require("http");
var spawn = require("child_process").spawn;
var createHandler = require("gitee-webhook-handler");
// 这里的/webhook对应上面url中的/webhook secret为上面配置的
var handler = createHandler({ 
    path: "/webhook", 
    secret: "myhashsecret" 
});

function RunCmd(cmd, args, cb) {
  var child = spawn(cmd, args);
  var result = "";
  child.stdout.on("data", function (data) {
    result += data.toString();
  });
  child.stdout.on("end", function () {
    cb(result);
  });
}

http
  .createServer(function (req, res) {
    handler(req, res, function (err) {
      res.statusCode = 404;
      res.end("no such location");
    });
  })
  .listen(7777);

# error事件
handler.on("error", function (err) {
  console.error("Error:", err.message);
});
# 我们监听的是Push
handler.on("Push Hook", function (event) {
  console.log(
    "Received a push event for %s to %s",
    event.payload.repository.name,
    event.payload.ref
  );
  var path = "./deploy.sh";
  // 新开一个进程运行deploy.sh文件
  RunCmd("sh", [path], function (result) {
    console.log(result);
  });
});
# 新建issue的hook
handler.on("Issue Hook", function (event) {
  console.log(
    "Received an issue event for %s action=%s: #%d %s",
    event.payload.repository.name,
    event.payload.action,
    event.payload.issue.number,
    event.payload.issue.title
  );
});

3.编写要执行的sh脚本

#! /bin/bash
cd ~/vue3-admin-server
git reset --hard origin/master
git clean -f
git pull
git checkout master
npm install
npm run build
cd ./dist
pm2 restart vue3-api

4. 使用pm2启动webhook.js

pm2 start ./webhook.js --name webhook

5. 测试

访问页面 vue3-api.liuxsh.top/api/user/he…

WX20210531-202824@2x.png

修改代码 执行 git push 命令 再次访问页面

WX20210531-203026@2x.png

查看gitee中webhook的记录

WX20210531-203112@2x.png

点击这里复制本文地址 以上内容由权冠洲的博客整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

支持Ctrl+Enter提交

联系我们| 本站介绍| 留言建议 | 交换友链 | 域名展示
本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除

权冠洲的博客 © All Rights Reserved.  Copyright quanguanzhou.top All Rights Reserved
苏公网安备 32030302000848号   苏ICP备20033101号-1
本网站由 提供CDN/云存储服务

联系我们