git-webhookWebHook 自动化部署和运维工具
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