日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

瀏覽:28日期: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 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
99热精品久久| 视频一区二区中文字幕| 日韩av网站在线免费观看| 亚洲欧美日本国产专区一区| 一区福利视频| 亚洲欧美不卡| 午夜在线视频一区二区区别 | 久久亚洲欧美| 视频一区视频二区中文字幕| 欧美资源在线| 日韩欧美中文在线观看| 日韩一区二区免费看| 99国产一区| 美女91精品| 日本一区中文字幕| 国产亚洲电影| 国内精品伊人| 久久国产主播| 欧美精品羞羞答答| 99国产精品久久久久久久成人热 | 久久精品卡一| 精品1区2区3区4区| 综合激情网...| 国产欧美日韩精品一区二区三区| 亚州欧美在线| 国产精品66| 日韩欧美精品综合| 在线国产一区二区| 一区二区三区四区精品视频| 久久国产三级| 国产一区二区三区久久| 亚洲高清成人| 日本在线成人| 高潮久久久久久久久久久久久久| 亚洲一级高清| 亚洲另类视频| 久久中文精品| 欧美特黄一区| 国产精品一站二站| 蜜桃成人精品| 亚洲精品一二| 岛国av在线播放| 欧美在线综合| 久久99影视| 欧美成人精品| 欧美在线日韩| 成人免费电影网址| 亚洲+小说+欧美+激情+另类| 日韩成人a**站| 视频在线在亚洲| 国产精品久久乐| 亚洲一级网站| 久久国产生活片100| 九九色在线视频| 久久福利一区| 日韩av在线中文字幕| 亚洲色图网站| 超级白嫩亚洲国产第一| 天堂av一区| 91精品一区二区三区综合在线爱| 综合欧美亚洲| 日韩电影在线视频| 日韩国产一区二| 日韩在线综合| 欧美伊人久久| 欧美日韩国产探花| 精品理论电影在线| 蜜臀av一区二区在线免费观看 | 天堂成人国产精品一区| 精品久久久久中文字幕小说| 国产视频一区欧美| 麻豆精品久久久| 国产日韩综合| 日韩精品诱惑一区?区三区| 日韩av一二三| 91久久久精品国产| 久久伊人久久| 亚洲美女91| 激情综合自拍| 久久伊人亚洲| 日韩一区精品字幕| 亚洲精品福利电影| 国产精品一线天粉嫩av| 老司机精品久久| 欧洲av不卡| 国产精品www994| 日本综合精品一区| 日韩视频免费| 日韩三区免费| 久久字幕精品一区| 国产一卡不卡| 蜜臀av亚洲一区中文字幕| 岛国av在线网站| 国产精品中文字幕亚洲欧美| 蜜臀久久99精品久久久画质超高清| 久久uomeier| 麻豆极品一区二区三区| 日韩福利视频网| 综合日韩在线| 日韩在线观看一区二区| 午夜av一区| 亚洲精品88| sm久久捆绑调教精品一区| 麻豆精品av| 欧美中文高清| 日本不卡不码高清免费观看| 香蕉成人久久| 国产伦精品一区二区三区在线播放 | 亚洲一区二区日韩| 午夜久久久久| 九九综合九九| 欧美丝袜一区| 99成人超碰| 99久久99久久精品国产片果冰| 中文在线资源| 老牛影视精品| 91看片一区| 日产午夜精品一线二线三线| 久久91视频| 国产一区三区在线播放| 精品一区二区三区四区五区| 91麻豆精品| 亚洲欧美网站在线观看| 一区二区国产在线| 日韩综合小视频| 国产一精品一av一免费爽爽| 国产人成精品一区二区三| 热久久久久久| 国产亚洲一区二区三区啪| 欧美日韩一区二区三区四区在线观看| 日韩激情av在线| 国产亚洲电影| 麻豆国产91在线播放| 久久精品国内一区二区三区| 久久精品色播| 国产一区二区三区亚洲| 国产成人黄色| 久久精品免费一区二区三区| 亚洲二区在线| 免费不卡在线观看| 欧美精品国产白浆久久久久| 美女视频网站久久| 麻豆视频在线看| 99久精品视频在线观看视频| 亚洲欧洲一区| 日韩精品视频在线看| 国产精品亚洲产品| sm久久捆绑调教精品一区| 99久久婷婷| 国产午夜久久| 午夜久久av| 国产精品一区二区精品视频观看| 久久精品伊人| 久久久久99| 丝袜亚洲精品中文字幕一区| 婷婷亚洲成人| 欧美黑人巨大videos精品| 九色porny丨国产首页在线| 国产精品丝袜xxxxxxx| 欧美一级久久| 性感美女一区二区在线观看| 日韩视频一区| 国产另类在线| 久久精品99久久无色码中文字幕| 免费看精品久久片| 国产精品一区二区三区美女| 精品伊人久久久| 美女久久久久| 日韩不卡一二三区| 夜夜精品视频| 免费日韩成人| 日韩天堂av| 美女国产一区二区三区| 九九在线精品| 国产精品久久| 欧美成人综合| 国产精品一区二区免费福利视频| 欧美sss在线视频| 日韩精品五月天| 日韩精品影视| 欧美一区不卡| 日韩网站中文字幕| 日韩有吗在线观看| 超碰成人av| 涩涩涩久久久成人精品| 精品亚洲a∨| 欧美中文字幕| 91免费精品| 日韩影片在线观看| 青青久久av| 国产毛片一区二区三区| 九一精品国产| 精品99在线| 亚洲欧洲专区| 亚洲天堂av影院| 日韩1区2区日韩1区2区| 日本一区二区高清不卡| 亚洲精品看片| 婷婷综合六月| 国产精品主播|