开源测试工具 Git WebHook:用于迅速搭建并使用 WebHook 进行自动化部署 ( Python)

aTool · 2016年10月26日 · 最后由 aTool 回复于 2016年10月27日 · 4013 次阅读

一个使用 Python Flask + SQLAchemy + Celery + Redis + React 开发的用于迅速搭建并使用 WebHook 进行自动化部署和运维系统,支持: Github / GitLab / GitOsc 。

  1. 技术栈简单,部署容易;
  2. 代码简洁易懂,二次开发毫无压力;
  3. 支持 Github / GitLab / GitOsc ;
  4. 使用 SSH 方式,支持多服务配置;

项目地址 | DEMO 示例

输入图片说明

一、如何安装 ?

  1. 安装 git-webhook:

    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 账号登陆。

  5. 添加 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 命令。如下图所示:

https://github.com/NetEaseGame/git-webhook/raw/master/app/static/res/img/server.png

第二步:添加 Git WebHook。主要填写 Git 项目的名字、需要 Hook 的分支名字,然后发生 PUSH 之后,需要在哪台服务器(第二步中配置的服务器中选择)执行 Shell 指令。如下图所示:

https://github.com/NetEaseGame/git-webhook/raw/master/app/static/res/img/webhook.png

最后一步:在 Git WebHook 右侧第一个按钮复制 WebHook Url 地址,并添加到 Git 项目中 Setting / WebHook 那一栏中即可生效。

补充:关于如何使用 Private key 通过 ssh 方式登录服务器执行 shell 指令,可以参考文章:http://50vip.com/article/84

其他问题,可以到 github 项目中提 issue。

共收到 13 条回复 时间 点赞

运行起来后的使用. 好像没提.
我这边也遇到了类似的事情. jenkins 的 gitlab 插件只支持 gitlab 的企业版本. 老的 jenkins gitlab merge request 插件又不支持新的 multibranch pipeline 类型 job. 所以也得自己开发一个 webhook 插件.

我今天刚好在这里也看到了链接
—— 来自 TesterHome 官方 安卓客户端

写的不怎么详细呀

端口亮点😀 😀

#4 楼 @yuweixx 这个是特色,哈哈~

#2 楼 @snake 这个网站应该是哪里采集的吧~~~不造~

#1 楼 @seveniruby 关于使用文档,我后面再写一个文档。

其实简单,运行起来之后,添加 server(就是你要去执行部署或者任务的服务器)、然后添加一个 webhook,大概就是指定 repo 名字,哪个分支,一旦出现 push,在哪个 server(上面配置的)执行什么 shell 脚本。保存之后就会生成一个 webhook url 地址,填写到 github、gitlib、gitosc 的 setting/webhook 那里就可以了。

#7 楼 @hustcc 这才是使用的关键 建议补全这块的介绍

#8 楼 @seveniruby 现在正在补。。。

#10 楼 @hustcc 这是你自己开发的吗. 我的意思是把整个流程你再介绍的详细点呗. 补到帖子里. 工具还是不错的, 但是介绍的简单其他人估计看不懂.

aTool #11 · 2016年10月27日 Author

#11 楼 @seveniruby soga,好的,这个是我开发的,应该内网需要用到管理进 20 台服务器的统一部署,所以用 webhook 来自动化。

aTool #13 · 2016年10月27日 Author

#11 楼 @seveniruby 已经改哒~

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册