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

联合创作 · 2023-09-29 15:11

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

浏览 28
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报