一个使用 Python Flask + SQLAchemy + Celery + Redis + React 开发的用于迅速搭建并使用 WebHook 进行自动化部署和运维系统,支持: Github / GitLab / GitOsc 。
安装 git-webhook:
pip install git-webhook
备注:项目中某一个依赖库需要安装 python-dev。
创建配置
gitwebhook config
命令执行之后,会在对应用户目录生成新的配置文件,然后对应修改配置文件内容。主要需要配置三点:
DATABASE_URI
: 数据库地址,理论上可以使用任何关系数据库;推荐使用 sqlite 和 mysql(经过测试);CELERY REDIS
: Redis URI 配置,主要用于 Celery 后台任务;GITHUB
: GitHub 登陆配置,可以到 OAuth applications 自行申请,登陆 Callback 地址为: your_domain/github/callback
.初始化数据库结构
gitwebhook createdb
运行应用
# 1. run python webserver
gitwebhook runserver
# 2. run celery async task
gitwebhook celery
运行之后,打开 http://127.0.0.1:18340(一巴扇死你)即可访问。使用 GitHub 账号登陆。
添加 WebHook
在工具中添加 WebHook 项目,获得 WebHook URL,并填写到 Github / GitLab / OscGit 的 WebHook 配置中。
安装之后如何使用?直接看你部署的 Web 应用文档吧,或者在这里也可以看到。
部署完了之后,就是怎么使用了,这里我来具体写一下,或者可以到部署之后 Web 应用文档中查看(http://webhook.hust.cc/#/doc/webhook?_k=fzcyv0)
第一步:添加服务器信息。当 Git 上项目有 PUSH 操作的时候,你需要在哪些机器人做操作,就需要那只哪些机器。具体需要配置,IP、PORT、用户名、Private Key(如何生成?)这些信息,本项目使用 SSH 方式登录服务器执行相应的 Shell 命令。如下图所示:
第二步:添加 Git WebHook。主要填写 Git 项目的名字、需要 Hook 的分支名字,然后发生 PUSH 之后,需要在哪台服务器(第二步中配置的服务器中选择)执行 Shell 指令。如下图所示:
最后一步:在 Git WebHook 右侧第一个按钮复制 WebHook Url 地址,并添加到 Git 项目中 Setting / WebHook 那一栏中即可生效。
补充:关于如何使用 Private key 通过 ssh 方式登录服务器执行 shell 指令,可以参考文章:http://50vip.com/article/84。
其他问题,可以到 github 项目中提 issue。