1.在代码仓库找到webhook设置:
image.png
2.创建接收消息的接口,已nodejs为例:
- 新建webhook.js文件,内容如下:
- 运行webhook.js文件,如: node webhook.js
-
成功启动后,直接在gitlib测试,或推送代码到仓库即可看到请求响应
image.png
image.png
错误响应
image.png
成功响应
image.png
var http = require("http");
var createHandler = require("node-gitlab-webhook");
// var handler = createHandler([ // 多个仓库
// { path: "/webhook1", secret: "设置的秘钥" },
// { path: "/webhook2", secret: "设置的秘钥" }
// ]);
var handler = createHandler({ path: "/", secret: "设置的秘钥" }); // 单个仓库
http.createServer(function(req, res) {
handler(req, res, function(err) {
res.statusCode = 404;
res.end("no such location");
});
}).listen(17000);
handler.on("error", function(err) {
console.error("Error:", err.message);
});
handler.on("push", function(event) {
console.log(
"Received a push event for %s to %s",
event.payload.repository.name,
event.payload.ref
);
switch (event.path) {
case "/": // 当有多个仓库时,根据path判断不同的仓库
// 判断不同的分支
if (event.payload.ref.indexOf("/release/") > -1) { // release分支
// 1、调用shell脚本,执行命令,拉取代码
// 2、打包,并且把打包后的静态文件移动到相应的位置
// 3、外部成功访问,自动部署完成
}
break;
case "/other":
// 处理其他对应仓库
break;
default:
// 处理其他
break;
}
});
网友评论