6

一、背景

首先贴地址,开源项目https://github.com/NetEaseGame/git-webhookDEMO 地址http://webhook.hust.cc/

我个人是在线这边的测试开发,主要工作是开发一些工具,辅助测试和开发,规范流程等等,这些内网的工具,一般不存在什么并发,性能瓶颈,上线部署其实非常简单,在需要更新上线的时候,提交最新代码到 release 分支,然后 ssh 登陆服务器,去执行一个 shell 脚本,拉取最新代码,restart 一下即可,其实并不是很复杂,然后还是存在一些问题:

  1. 一些没有 ssh 权限的同学更新代码之后,都会找你来帮忙重启一下;

  2. 周末节假日,加班的同学跟你打电话:服务挂了需要重启怎么办?

  3. 每次 push 都要去 restart 一下,其实挺烦躁的;

  4. 一次 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


hustcc
933 声望88 粉丝

前端攻城军