用于git部署的webhook接收器
webhooks-git-automata的Python项目详细描述
用于git部署的webhook接收器
这个项目开始时是一个肮脏的快速黑客来执行一些部署操作 由Git Webhook触发。
我看了一下其他的项目,没有找到一个适合我的 需要,所以我开始了这个项目…然后它长了一点变成 比最初的快速攻击更通用的东西。
这个项目的目标是具有git存储库的devops或sysadmin,通常 有一个VIP分店,自动部署。你可能想有不同的分支 对于舞台和制作或设置不同的推送权限 树枝。当接收到webhook时,此实用程序将更新本地git存储库 执行设置中的命令。
快速启动
- 创建并激活虚拟环境:
virtualenv --python=/usr/bin/python3 /path/to/venv
source /path/to/venv/bin/activate
- 安装程序包:
pip install webhooks_git_automata
- 创建一个
settings.yaml
- 设置一个服务(例如systemdservice文件),该服务可以执行以下操作:
/path/to/venv/bin/wh-gitd /path/to/settings.yaml
设置
额外的cli功能
若要在不部署的情况下强制执行和拉取命令,可以使用
内置的wh-git-trigger
命令。示例用法:
wh-git-trigger /path/to/setings.yaml myrepoentry
这将强制git拉取并执行命令。此工具的未来版本将 包括更多的细粒度控制——例如避免提取、干运行、显示状态信息……
实施细节
此项目包含一个最小的flask服务器,该服务器应答发送的post webhook 通过gitlab、github或gogs这样的git服务器。服务器通过 烧瓶法。
不需要太多流量,但您可能需要在前面设置一个反向代理 或者添加一些更奇特的方法,比如wsgi或uwsgi或类似的层。
典型的git服务器期望webhook发送一个快速的回复(一般来说,http
连接是短暂的),因此有一个worker/tasks方法。在那里
是一个非常简单的基于Threading
和共享Queue
的实现。更复杂
将来可能会添加实现(欢迎拉取请求)。