GithubHelp home page GithubHelp logo

xiao-jay / webhook Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 1.0 116 KB

基于node-js 二次开发的webhook,包含完整教程和代码,极速部署,支持 Github / GitLab / Gogs / GitOsc/ Codeup。

JavaScript 77.70% Shell 22.30%

webhook's Introduction

本项目想要提供最简单的、比较全面的、易于上手的webhook服务

git-webhook-handler fork from https://github.com/Rem486/git-webhook-handler

基于 nodejs 实现对 webhook 处理的,支持:

Quickstart

1、clone 项目

2、初始化git submodule 子模块并且拉取git-webhook-handler.git代码

git submodule init
git submodule update

3、安装node,以ubuntu为例

apt-get install node
npm install bl        // 安装bl

4、修改项目下webhook.js文件

修改secret和端口,看情况修改path,

var http = require('http')
var createHandler = require('./git-webhook-handler')
var handler = createHandler({ path: '/webhook', secret: 'xxx' }) # secret需要改

function run_cmd(cmd, args, callback) {
  var spawn = require('child_process').spawn;
  var child = spawn(cmd, args);
  var resp = "";

  child.stdout.on('data', function(buffer) { resp += buffer.toString(); });
  child.stdout.on('end', function() { callback (resp) });
}

http.createServer(function (req, res) {
  handler(req, res, function (err) {
    res.statusCode = 404
    res.end('no such location')
  })
}).listen(9096)   # 端口需要改

handler.on('error', function (err) {
  console.error('Error:', err.message)
})

handler.on('push', function (event) {
console.log('receive webhook success')
  console.log('Received a push event for %s to %s',
    event.payload.repository.name,
    event.payload.ref)
    run_cmd('sh', ['./webhook.sh',event.payload.repository.name], function(text){ console.log(text) });
})

handler.on('issues', 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)
})

5、修改自己需要的脚本,下面是示例,到一个目录下pull

#!/bin/bash

cd /root/model-manage
git pull

并且给webhook.sh权限

chmod 755 webhook.sh

6、在服务器内运行webhook.js

简单测试用,可以运行,记得确保9096端口是外部可以访问的

node webhook.js

实际使用,使用screen里面运行

apt-get install screen     //安装screen
screen -S webhook          //创建一个服务
screen -r webhook          //进入
node webhook.js            //运行服务
control+a+d       				//退出,千万不要control+c退出

7、在网站上使用webhook服务(使用github作为例子)

github仓库->setting->web hooks,点击add webhook,端口是默认9096,记得服务器开启9096端口,或者换其他可以通的端口,secret记得和webhook.js里面一样。

点击测试webhook

成功!

webhook's People

Contributors

xiao-jay avatar qiuhuachuan avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

wdy0702

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.