电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python基于Webhook實現github自動化部署

瀏覽:2日期:2022-07-03 18:32:15

一. 分析需求

1. 需求說明

在項目開發過程中,我們有時會頻繁的更新代碼, 流程大概為:

(1) 本地git push提交代碼至git托管平臺

(2) 登陸到部署有網站源碼的線上服務器

(3) cd到項目根目錄, 執行git pull 指令拉取最新代碼

Python基于Webhook實現github自動化部署

整個流程純手動更新,每次耗時在1分鐘左右, 這樣一天下來,浪費了很多時間在這些瑣碎的事情上.

現在的需求是,在每次本地提交代碼后,線上服務器自動拉取最新代碼,完成部署更新.即所謂的自動化部署.

2. 方案

現在一些主流代碼托管平臺如github、 gitlab、git@osc 等均已提供webhook功能,在用戶push了代碼后,會自動回調一個您設定的http地址。 用戶可以自己根據不同的需求,來編寫自己的腳本程序(比如發郵件,自動部署等);目前,webhook支持多種觸發方式,如Push、 Tag Push、 Issue、評論、合并請求 等。

附webhook的簡介:

Webhook就是用戶通過自定義回調函數(callback)的方式來改變Web應用的一種行為,這些回調函數可以由不是該Web應用官方的第三方用戶或者開發人員來維護,修改。通過Webhook,你可以自定義一些行為通知到指定的URL去。Webhook的“自定義回調函數”通常是由一些事件觸發的,比如推送代碼到代碼庫或者博客下新增一個評論,源站點會為Webhook進行HTTP請求的URI配置。用戶通過配置,就可以使一個網站上的事件調用在另一個網站上表現出來,這些事件調用可以是任何事件,但通常應用的是系統集成和消息通知。

方案流程:

Python基于Webhook實現github自動化部署

所以自動部署主要實現方式就是:

- 修改代碼 push

- github(其他倉庫平臺)發送請求給你的網站服務器

- 網站服務器收到更新請求,執行自動部署腳本

- 自動部署腳本執行代碼拉取,打包,修改文件等動作完成網站的更新部署

二、具體實現

Github倉庫設置

在GitHub上需要更新的代碼倉庫添加webhooks, 在指定倉庫→settings→webhooks

Python基于Webhook實現github自動化部署

編寫GitHub推送回調

python開啟web服務(hook.py)

import hmacimport osfrom flask import Flask, request, jsonifyapp = Flask(__name__)# github中webhooks的secretgithub_secret = ’xxxxxxxx’def encryption(data): key = github_secret.encode(’utf-8’) obj = hmac.new(key, msg=data, digestmod=’sha1’) return obj.hexdigest()@app.route(’/hook’, methods=[’POST’])def post_data(): ''' github加密是將post提交的data和WebHooks的secret通過hmac的sha1加密,放到HTTP headers的 X-Hub-Signature參數中 ''' post_data = request.data token = encryption(post_data) # 認證簽名是否有效 signature = request.headers.get(’X-Hub-Signature’, ’’).split(’=’)[-1] if signature != token: return 'token認證無效', 401 # 運行shell腳本,更新代碼 os.system(’sh deploy.sh’) return jsonify({'status': 200})if __name__ == ’__main__’: app.run(port=8989)

編寫shell腳本(deploy.sh)

cd '$(dirname '$0')'echo ’--------Git pull------------’git pullecho ’-----Already up-to-date------’echo ’----- restart supervision-----’supervisorctl restart blogecho ’----- reload nginx-----’nginx -s reload

注意: 此次部署的hook.py 和deploy.sh都是在倉庫的同一目錄下

開啟服務

supervisor部署webhook

[program:webhook]directory=/data/wwwroot/docscommand=/home/dukenan/.envs/flask_py3/bin/python3 hook.pyautostart=trueautorestart=falsestartsecs=1;使用root賬戶user=rootstderr_logfile=/etc/supervisor/logs/webhooks/stderr.log stdout_logfile=/etc/supervisor/logs/webhooks/stdout.log redirect_stderr=trueloginfo=info

部署NGINX的參考

server { listen 80; server_name 服務器IP; # 配置域名 client_max_body_size 300M; location / { proxy_pass http://127.0.0.1:8989; #轉發本地8989端口 proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 玻璃钢板-玻璃钢防腐瓦-玻璃钢材料-广东壹诺 | 英思科GTD-3000EX(美国英思科气体检测仪MX4MX6)百科-北京嘉华众信科技有限公司 | 阀门智能定位器_电液动执行器_气动执行机构-赫尔法流体技术(北京)有限公司 | 不发火防静电金属骨料_无机磨石_水泥自流平_修补砂浆厂家「圣威特」 | 复盛空压机配件-空气压缩机-复盛空压机(华北)总代理 | 机器视觉检测系统-视觉检测系统-机器视觉系统-ccd检测系统-视觉控制器-视控一体机 -海克易邦 | 岩棉板|岩棉复合板|聚氨酯夹芯板|岩棉夹芯板|彩钢夹芯板-江苏恒海钢结构 | 聚合甘油__盐城市飞龙油脂有限公司| 铝合金脚手架厂家-专注高空作业平台-深圳腾达安全科技 | 真空粉体取样阀,电动楔式闸阀,电动针型阀-耐苛尔(上海)自动化仪表有限公司 | 飞扬动力官网-广告公司管理软件,广告公司管理系统,喷绘写真条幅制作管理软件,广告公司ERP系统 | 一氧化氮泄露报警器,二甲苯浓度超标报警器-郑州汇瑞埔电子技术有限公司 | 济南ISO9000认证咨询代理公司,ISO9001认证,CMA实验室认证,ISO/TS16949认证,服务体系认证,资产管理体系认证,SC食品生产许可证- 济南创远企业管理咨询有限公司 郑州电线电缆厂家-防火|低压|低烟无卤电缆-河南明星电缆 | 破碎机锤头_耐磨锤头_合金锤头-鼎成机械一站式耐磨铸件定制服务 微型驱动系统解决方案-深圳市兆威机电股份有限公司 | 彭世修脚_修脚加盟_彭世修脚加盟_彭世足疗加盟_足疗加盟连锁_彭世修脚技术培训_彭世足疗 | 包装机传感器-搅拌站传感器-山东称重传感器厂家-济南泰钦电气 | 江西自考网-江西自学考试网| 民用音响-拉杆音响-家用音响-ktv专用音响-万昌科技 | 智能交通网_智能交通系统_ITS_交通监控_卫星导航_智能交通行业 | 游戏版号转让_游戏资质出售_游戏公司转让-【八九买卖网】 | 波纹补偿器_不锈钢波纹补偿器_巩义市润达管道设备制造有限公司 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 除尘器布袋骨架,除尘器滤袋,除尘器骨架,电磁脉冲阀膜片,卸灰阀,螺旋输送机-泊头市天润环保机械设备有限公司 | 淄博不锈钢,淄博不锈钢管,淄博不锈钢板-山东振远合金科技有限公司 | 土壤养分检测仪|土壤水分|土壤紧实度测定仪|土壤墒情监测系统-土壤仪器网 | 烘箱-工业烘箱-工业电炉-实验室干燥箱 - 苏州华洁烘箱制造有限公司 | 青岛空压机,青岛空压机维修/保养,青岛空压机销售/出租公司,青岛空压机厂家电话 | 连栋温室大棚建造厂家-智能玻璃温室-薄膜温室_青州市亿诚农业科技 | 动环监控_机房环境监控_DCIM_机房漏水检测-斯特纽 | 沟盖板_复合沟盖板厂_电力盖板_树脂雨水篦子-淄博拜斯特 | 档案密集柜_手动密集柜_智能密集柜_内蒙古档案密集柜-盛隆柜业内蒙古密集柜直销中心 | 智能监控-安防监控-监控系统安装-弱电工程公司_成都万全电子 | 高低温试验箱-模拟高低温试验箱订制-北京普桑达仪器科技有限公司【官网】 | 全自动固相萃取仪_高通量真空平行浓缩仪-勤业永为 | 医养体检包_公卫随访箱_慢病随访包_家签随访包_随访一体机-济南易享医疗科技有限公司 | 杜康白酒加盟_杜康酒代理_杜康酒招商加盟官网_杜康酒厂加盟总代理—杜康酒神全国运营中心 | 120kv/2mA直流高压发生器-60kv/2mA-30kva/50kv工频耐压试验装置-旭明电工 | 除甲醛公司-甲醛检测治理-杭州创绿家环保科技有限公司-室内空气净化十大品牌 | 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | 环球周刊网| 杭州月嫂技术培训服务公司-催乳师培训中心报名费用-产后康复师培训机构-杭州优贝姆健康管理有限公司 |