git-webhook - WebHook 自动化部署和运维工具


MIT
跨平台
Python

软件简介

Git WebHook

一个使用 Python Flask + SQLAchemy + Celery + Redis + React 开发的用于迅速搭建并使用 WebHook
进行自动化部署和运维系统,支持:Github / GitLab / GitOsc。

  • 技术栈简单,部署容易;

  • 代码简洁易懂,二次开发毫无压力;

  • 支持 Github / GitLab / GitOsc;

  • 使用 SSH 方式,支持多服务配置;

Online DEMO Website: http://webhook.hust.cc/,使用 gunicorn + gevent + ngxin
部署。另外,如果觉得配置过于复杂,可以使用精简版
webhookit(https://github.com/hustcc/webhookit),配置简单吗,但是没有 Web 界面的操作。

一、如何使用 ?

1. 安装工具

pip install git-webhook

2. 配置工具

gitwebhook config

命令执行之后,会在对应用户目录生成新的配置文件,然后对应修改配置文件内容。主要需要配置三点:

  • DATABASE_URI: 数据库地址,理论上可以使用任何关系数据库;推荐使用 sqlite 和 mysql (经过测试);
  • CELERY REDIS: Redis URI 配置,主要用于 Celery 后台任务;
  • GITHUB: GitHub 登陆配置,可以到 OAuth applications 自行申请,登陆 Callback 地址为: your_domain/github/callback.

3. 初始化数据库结构

gitwebhook createdb

4. 运行应用

# 1. run python webserver
gitwebhook runserver
# 2. run celery async task
gitwebhook celery

运行之后,打开 http://127.0.0.1:18340 即可访问。使用 GitHub 账号登陆。

5. 添加WebHook

在工具中添加 Git 项目,获得 WebHook URL,并填写到 Github / GitLab / OscGit 的 WebHook 配置中。

二、效果预览

  • 首页

  • WebHook列表

  • 服务器列表

  • WebHook 历史记录

三、部署

代码使用 Flask 框架开发,gitwebhook runserver 运行可以用于线上生产环境,可以额外使用 nginx 做负载均衡和域名绑定。

主要的服务器依赖环境:

  • 数据库环境(自行选择,推荐 mysql 和 sqlite);
  • Redis,利用 Celery 做后台任务;

备注:如果使用 gunicorn 部署, worker 数量必须为 1,建议 worker 类型为 eventlet (gunicorn -k
eventlet -w 1),并且 nginx 负载均衡的时候,需要使用 ip_hash 算法。 具体请参考: gunicorn-web-server

当然也可以直接使用 Docker 部署。

LICENSE

MIT @hustcc