git-webhookWebHook 自動(dòng)化部署和運(yùn)維工具
Git WebHook
一個(gè)使用 Python Flask + SQLAchemy + Celery + Redis + React 開發(fā)的用于迅速搭建并使用 WebHook 進(jìn)行自動(dòng)化部署和運(yùn)維系統(tǒng),支持:Github / GitLab / GitOsc。
-
技術(shù)棧簡(jiǎn)單,部署容易;
-
代碼簡(jiǎn)潔易懂,二次開發(fā)毫無壓力;
-
支持 Github / GitLab / GitOsc;
-
使用 SSH 方式,支持多服務(wù)配置;
Online DEMO Website: http://webhook.hust.cc/,使用 gunicorn + gevent + ngxin 部署。另外,如果覺得配置過于復(fù)雜,可以使用精簡(jiǎn)版 webhookit(https://github.com/hustcc/webhookit),配置簡(jiǎn)單嗎,但是沒有 Web 界面的操作。
一、如何使用 ?
1. 安裝工具
pip install git-webhook
2. 配置工具
gitwebhook config
命令執(zhí)行之后,會(huì)在對(duì)應(yīng)用戶目錄生成新的配置文件,然后對(duì)應(yīng)修改配置文件內(nèi)容。主要需要配置三點(diǎn):
- DATABASE_URI: 數(shù)據(jù)庫(kù)地址,理論上可以使用任何關(guān)系數(shù)據(jù)庫(kù);推薦使用 sqlite 和 mysql (經(jīng)過測(cè)試);
- CELERY REDIS: Redis URI 配置,主要用于 Celery 后臺(tái)任務(wù);
- GITHUB: GitHub 登陸配置,可以到 OAuth applications 自行申請(qǐng),登陸 Callback 地址為: your_domain/github/callback.
3. 初始化數(shù)據(jù)庫(kù)結(jié)構(gòu)
gitwebhook createdb
4. 運(yùn)行應(yīng)用
# 1. run python webserver gitwebhook runserver # 2. run celery async task gitwebhook celery
運(yùn)行之后,打開 http://127.0.0.1:18340 即可訪問。使用 GitHub 賬號(hào)登陸。
5. 添加WebHook
在工具中添加 Git 項(xiàng)目,獲得 WebHook URL,并填寫到 Github / GitLab / OscGit 的 WebHook 配置中。
二、效果預(yù)覽
-
首頁(yè)
-
WebHook列表
-
服務(wù)器列表
-
WebHook 歷史記錄
三、部署
代碼使用 Flask 框架開發(fā),gitwebhook runserver 運(yùn)行可以用于線上生產(chǎn)環(huán)境,可以額外使用 nginx 做負(fù)載均衡和域名綁定。
主要的服務(wù)器依賴環(huán)境:
- 數(shù)據(jù)庫(kù)環(huán)境(自行選擇,推薦 mysql 和 sqlite);
- Redis,利用 Celery 做后臺(tái)任務(wù);
備注:如果使用 gunicorn 部署, worker 數(shù)量必須為 1,建議 worker 類型為 eventlet (gunicorn -k eventlet -w 1),并且 nginx 負(fù)載均衡的時(shí)候,需要使用 ip_hash 算法。 具體請(qǐng)參考: gunicorn-web-server
當(dāng)然也可以直接使用 Docker 部署。
LICENSE
MIT @hustcc
