前端自动化部署gitlib webhook

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;
  }
});

你可能感兴趣的:(前端自动化部署gitlib webhook)