一、背景
首先贴地址,开源项目:https://github.com/NetEaseGame/git-webhook,DEMO 地址:http://webhook.hust.cc/
我个人是在线这边的测试开发,主要工作是开发一些工具,辅助测试和开发,规范流程等等,这些内网的工具,一般不存在什么并发,性能瓶颈,上线部署其实非常简单,在需要更新上线的时候,提交最新代码到 release 分支,然后 ssh 登陆服务器,去执行一个 shell 脚本,拉取最新代码,restart 一下即可,其实并不是很复杂,然后还是存在一些问题:
一些没有 ssh 权限的同学更新代码之后,都会找你来帮忙重启一下;
周末节假日,加班的同学跟你打电话:服务挂了需要重启怎么办?
每次 push 都要去 restart 一下,其实挺烦躁的;
一次 git push 的代码,需要更新到很多台服务器,你就更加烦躁了;
所以我做了这样一个小工具,利用 git 的 webhook 来简化部署工作。
二、git-webhook
Git WebHook 是一个使用 Python Flask + SQLAchemy + Celery + Redis + React 开发的用于迅速搭建并使用 WebHook 进行自动化部署和运维系统,支持:Github / GitLab / Gogs / GitOsc。
技术栈简单,部署容易;
代码简洁易懂,二次开发毫无压力;
支持 Github / GitLab / Gogs / GitOsc;
使用 SSH 方式,支持多服务配置;
三、如何安装?
1. 安装应用
pip install git-webhook
备注:项目中某一个依赖库需要安装 python-dev。
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 账号登陆。
在工具中添加 WebHook 项目,获得 WebHook URL,并填写到 Github / GitLab / OscGit 的 WebHook 配置中。
四、截图
MIT @hustcc
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。