1. 在项目中新建一个webhook
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. 测试
修改代码 执行 git push 命令 再次访问页面
查看gitee中webhook的记录
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END