git-webhook 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
git-webhook 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议: MIT
开发语言: Python JavaScript
操作系统: 跨平台
开发厂商: 网易
收录时间: 2016-10-23
提 交 者: 小薇

Git WebHook

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

  • 技术栈简单,部署容易;

  • 代码简洁易懂,二次开发毫无压力;

  • 支持 Github / GitLab / GitOsc;

  • 使用 SSH 方式,支持多服务配置;

Online DEMO Website: http://webhook.hust.cc/,使用 gunicorn + gevent + ngxin 部署。另外,如果觉得配置过于复杂,可以使用精简版 webhookit(https://github.com/hustcc/webhookit),配置简单吗,但是没有 Web 界面的操作。

 

一、如何使用 ?

1. 安装工具

pip install git-webhook

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

在工具中添加 Git 项目,获得 WebHook URL,并填写到 Github / GitLab / OscGit 的 WebHook 配置中。

 

二、效果预览

  • 首页

index.png

  • WebHook列表

  • 服务器列表

server.png

  • WebHook 历史记录

 

三、部署

代码使用 Flask 框架开发,gitwebhook runserver 运行可以用于线上生产环境,可以额外使用 nginx 做负载均衡和域名绑定。

主要的服务器依赖环境:

  • 数据库环境(自行选择,推荐 mysql 和 sqlite);
  • Redis,利用 Celery 做后台任务;

备注:如果使用 gunicorn 部署, worker 数量必须为 1,建议 worker 类型为 eventlet (gunicorn -k eventlet -w 1),并且 nginx 负载均衡的时候,需要使用 ip_hash 算法。 具体请参考: gunicorn-web-server

当然也可以直接使用 Docker 部署。

 

 

LICENSE

MIT @hustcc

展开阅读全文

代码

git-webhook 的相关博客

git使用WebHook实现自动构建

说明 我们使用git进行版本管理常常会遇到这样的一个需求,希望git push的时候服务器上代码的代码也能自动更新,这次我使用了c...

php与Git下基于webhook的自动化部署

前言 2018年第一篇文章,没啥技术含量,权当笔记 我们一般都会用git或者svn来管理我们的代码 每次代码更新后还要手动的去把服...

玩转git之webhook应用初探

玩转git之webhook应用初探

github webhook git pull Permission denied

使用php-fpm 去拉去git 代码 git pull, $cmd = "cd $target && git pull "; $res = shell_exec($cmd); 提示 error: cannot ...

WebHook

概念 什么是 WebHook? WebHook,网络钩子,就是一个 HTTP 回调,一个简单的基于 HTTP POST 的事件通知。 WebHook 这个词是由...

webhook

使用Webhook扩展Alertmanager(钉钉版) 在某些情况下除了Alertmanager已经内置的集中告警通知方式以外,对于不同的用户和组织而...

Git操作自动触发企业微信机器人webhook

[本文出自天外归云的博客园] 背景 在git做一些merge或push的操作,我们希望可以自动在企业微信群发送自定义的通知。 服务代码...

Git WebHook:用于迅速搭建并使用 WebHook 进行自动化部署和运维系统( Python)

一个使用 Python Flask + SQLAchemy + Celery + Redis + React 开发的用于迅速搭建并使用 WebHook 进行自动化部署和运维系统,...

使用git_stats 统计分析git 仓库代码&& 集成webhook

前几天写过一个使用gitstats 统计分析代码的,但是那个因为开发的问题,对于直接和容器集成是有问题的,统计需要进入容器执行...

git-webhook 的相关问答

还没有任何问答,马上提问

评论 (9)

加载中
安装很简单
2018/06/06 20:25
回复
举报
打分: 很差
各种报错都装不上。什么鬼
2017/09/12 18:08
回复
举报
打分: 力荐
2016/12/22 12:34
回复
举报
Gitlab 本身支持 WebHook 使用这个的意义是什么? #git-webhook#
2016/10/27 09:00
回复
举报
又被推荐了~ #git-webhook#
2016/10/27 09:35
回复
举报
这个厉害,我用node.js做了个类似的,一直没空搞这么完善的界面和交互 #git-webhook#
2016/10/27 22:29
回复
举报
今天支持 websocket 实时更新页面状态了:http://webhook.hust.cc/ #git-webhook#
2016/11/16 20:35
回复
举报
直接发布为 pip 包,安装部署跟简单了。 #git-webhook#
2016/12/02 10:32
回复
举报
2016/12/06 10:36
回复
举报
更多评论
9 评论
254 收藏
分享
返回顶部
顶部