GithubHelp home page GithubHelp logo

hustcc / webhookit Goto Github PK

View Code? Open in Web Editor NEW
193.0 11.0 41.0 36 KB

:octocat: Simple git webhook cli tool for automation tasks, bind git webhook to action.

Home Page: http://webhookit.hust.cc/

License: MIT License

Makefile 0.45% Python 99.55%
webhook git-webhook github gitlab gogs gitosc webhookit tornado coding

webhookit's Introduction

webhookit

A simple cli tool to create http server for git webhook, GitHub, GitLab, GitOsc, Gogs, Coding are all supported.

LIVE DEMO | 中文说明文档

Latest Stable Version Build Status GitHub GitLab GitOsc Gogs Coding

1. Install

pip install webhookit

Python 2 / 3 are all supported. After install, you can get two commands named webhookit and webhookit_config in your system.

2. Usage

Run webhookit --help to get help content of the command. Help content below:

# webhookit --help
Usage: webhookit [OPTIONS]

Options:
  -c, --config PATH      The web hook configure file path.
  -p, --port INTEGER     The listening port of HTTP server.
  --help                 Show this message and exit.

Run webhookit_config to get the config template strings.

Run webhookit -c config.py -p 18340 to start the http server for git webhook.

3. Example

Here is an simple example to run the webhookit http server.

# 1. install webhookit
pip install webhookit

# 2. initial a webhookit config file
webhookit_config > /home/hustcc/webhook-configs/config4hustcc.py

# 3. update config4hustcc.py with your own config and save
vim config4hustcc.py

# 4. run webhookit http server
webhookit -c config4hustcc.py

Then open http://host:18340 in your browser, can see:

  1. The webhook status.
  2. The webhook url.
  3. The webhook server configures.

4. configure file

# -*- coding: utf-8 -*-
'''
Created on Mar-03-17 15:14:34
@author: hustcc/webhookit
'''

# This means:
# When get a webhook request from `repo_name` on branch `branch_name`,
# will exec SCRIPT on servers config in the array.
WEBHOOKIT_CONFIGURE = {
    # a web hook request can trigger multiple servers.
    'repo_name/branch_name': [{
        # if exec shell on local server, keep empty.
        'HOST': '',  # will exec shell on which server.
        'PORT': '',  # ssh port, default is 22.
        'USER': '',  # linux user name
        'PWD': '',  # user password or private key.

        # The webhook shell script path.
        'SCRIPT': '/home/hustcc/exec_hook_shell.sh'
    }, 
	...],
	...
}

The python var name WEBHOOKIT_CONFIGURE can not be modified.

Each webhook has it's key with format of 'repo_name/branch_name', Each webhook can trigger a group of servers, which is the value of the key.

Server can be remote and local, if local, keep HOST, PORT, USER, PWD be empty.

5. License

MIT@hustcc.

webhookit's People

Contributors

hustcc avatar navy-xie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

webhookit's Issues

NameError: global name 'memoryview' is not defined

当我使用 webhookit -c config.py ,开始监听时,直接在网页请求访问时,就直接报错
提示:
[E 170818 10:08:46 iostream:554] Uncaught exception, closing connection.
Traceback (most recent call last):
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 519, in _handle_events
self._handle_read()
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 663, in _handle_read
self._read_from_buffer(pos)
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 778, in _read_from_buffer
self._run_read_callback(pos, False)
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 687, in _run_read_callback
future.set_result(self._consume(size))
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 910, in _consume
b = (memoryview(self._read_buffer)
NameError: global name 'memoryview' is not defined
[E 170818 10:08:46 ioloop:638] Exception in callback None
Traceback (most recent call last):
File "/usr/lib64/python2.6/site-packages/tornado/ioloop.py", line 888, in start
handler_func(fd_obj, events)
File "/usr/lib64/python2.6/site-packages/tornado/stack_context.py", line 277, in null_wrapper
return fn(*args, **kwargs)
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 519, in _handle_events
self._handle_read()
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 663, in _handle_read
self._read_from_buffer(pos)
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 778, in _read_from_buffer
self._run_read_callback(pos, False)
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 687, in _run_read_callback
future.set_result(self._consume(size))
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 910, in _consume
b = (memoryview(self._read_buffer)
NameError: global name 'memoryview' is not defined
[E 170818 10:08:46 iostream:554] Uncaught exception, closing connection.
Traceback (most recent call last):
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 519, in _handle_events
self._handle_read()
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 663, in _handle_read
self._read_from_buffer(pos)
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 778, in _read_from_buffer
self._run_read_callback(pos, False)
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 687, in _run_read_callback
future.set_result(self._consume(size))
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 910, in _consume
b = (memoryview(self._read_buffer)
NameError: global name 'memoryview' is not defined
[E 170818 10:08:46 ioloop:638] Exception in callback None
Traceback (most recent call last):
File "/usr/lib64/python2.6/site-packages/tornado/ioloop.py", line 888, in start
handler_func(fd_obj, events)
File "/usr/lib64/python2.6/site-packages/tornado/stack_context.py", line 277, in null_wrapper
return fn(*args, **kwargs)
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 519, in _handle_events
self._handle_read()
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 663, in _handle_read
self._read_from_buffer(pos)
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 778, in _read_from_buffer
self._run_read_callback(pos, False)
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 687, in _run_read_callback
future.set_result(self._consume(size))
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 910, in _consume
b = (memoryview(self._read_buffer)
NameError: global name 'memoryview' is not defined
[E 170818 10:08:47 iostream:554] Uncaught exception, closing connection.
Traceback (most recent call last):
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 519, in _handle_events
self._handle_read()
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 663, in _handle_read
self._read_from_buffer(pos)
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 778, in _read_from_buffer
self._run_read_callback(pos, False)
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 687, in _run_read_callback
future.set_result(self._consume(size))
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 910, in _consume
b = (memoryview(self._read_buffer)
NameError: global name 'memoryview' is not defined
[E 170818 10:08:47 ioloop:638] Exception in callback None
Traceback (most recent call last):
File "/usr/lib64/python2.6/site-packages/tornado/ioloop.py", line 888, in start
handler_func(fd_obj, events)
File "/usr/lib64/python2.6/site-packages/tornado/stack_context.py", line 277, in null_wrapper
return fn(*args, **kwargs)
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 519, in _handle_events
self._handle_read()
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 663, in _handle_read
self._read_from_buffer(pos)
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 778, in _read_from_buffer
self._run_read_callback(pos, False)
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 687, in _run_read_callback
future.set_result(self._consume(size))
File "/usr/lib64/python2.6/site-packages/tornado/iostream.py", line 910, in _consume
b = (memoryview(self._read_buffer)
NameError: global name 'memoryview' is not defined

webhookit页面打不开

自己在本地部署了一个gitlab,版本是10.1.3-ee,按照README部署好了webhookit,启动后,端口也在监听,但是http服务在浏览器里面打不开。

配置好后,老是提示adHostKeyException: Host key for serve

错误内容如下:

File "/usr/lib/python2.6/site-packages/webhookit/utils.py", line 150, in do_webhook_shell
    data)
  File "/usr/lib/python2.6/site-packages/webhookit/utils.py", line 110, in do_ssh_cmd
    s.connect(ip, port, account, password=pkey, timeout=10)
  File "/usr/lib/python2.6/site-packages/paramiko/client.py", line 311, in connect
    raise BadHostKeyException(hostname, server_key, our_server_key)
BadHostKeyException: Host key for server 192.168.1.190 does not match!

我直接使用ssh能链接到git服务器
config.py 我改了一行

'PWD': open("/root/.ssh/id_rsa").read(),  # user password or private key.

请问这样可行吗

tag push时貌似有点儿问题

当绑定gitlab的tag push evets的时候,会把repo/branch中的branch替换为tag名称。
创建tag:git tag -a v1.0 -m "first tag version"
tag提交命令:git push origin --tags

在返回的Response body中,就会报错:{"data": "Not match the repo and branch or the webhook servers is not exist: cmdb/v1.0", "success": false}

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.