一个使用 Python Flask + SQLAchemy + Celery + Redis + React 开发的用于迅速搭建并使用 WebHook 进行自动化部署和运维系统,支持: Github / GitLab / GitOsc 。
- 技术栈简单,部署容易;
- 代码简洁易懂,二次开发毫无压力;
- 支持 Github / GitLab / GitOsc ;
- 使用 SSH 方式,支持多服务配置;
一、如何使用 ?
-
下载本项目代码:
git clone git@github.com:NetEaseGame/git-webhook.git -
安装 Python & Javascript 依赖
pip install -r requirements.txtnpm install -
配置 config.py
拷贝一份 config_example.py 到同目录 config.py, 然后对应修改配置内容。主要需要配置三点:
- DATABASE_URI: 数据库地址,理论上可以使用任何关系数据库;推荐使用 sqlite 和 mysql (经过测试);
- CELERY REDIS: Redis URI 配置,主要用于 Celery 后台任务;
- GITHUB: GitHub 登陆配置,可以到 OAuth applications 自行申请,登陆 Callback 地址为:
your_domain/github/callback.
4.初始化数据库结构
```shell
python scripts.py build_db
```
5.运行应用
```shell
# 1. package static files
npm run js
# 2. run python web
python run_webhook.py
# 3. run celery
celery -A app.celeryInstance worker --loglevel=info
```
运行之后,打开 http://127.0.0.1:18340 (一巴扇死你)即可访问。使用 GitHub 账号登陆。
添加WebHook在工具中添加 Git 项目,获得 WebHook URL,并填写到 Github / GitLab / OscGit 的 WebHook 配置中。
二、效果预览
三、部署
代码使用 Flask 框架开发,线上部署使用 gunicorn + gevent + nginx 已经是比较成熟的方案了,本应用当然也可以使用这种方式部署。
主要的服务器依赖环境:
- 数据库环境(自行选择,推荐 mysql 和 sqlite);
- Redis,利用 Celery 做后台任务;
当然也支持 docker 部署,参考:docker 安装部署 git-webhook