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

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

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

瀏覽:32日期: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久久,三上悠亚国产精品一区二区三区
黑人精品一区| 午夜在线精品偷拍| 日本在线不卡视频一二三区| 久色成人在线| 日本精品国产| 麻豆成人综合网| 国产不卡人人| 亚洲精品a级片| 美女国产精品| 久久国产视频网| 国产在线不卡一区二区三区| 日韩高清中文字幕一区二区| 国产字幕视频一区二区| 综合亚洲视频| 欧美91在线| 婷婷激情久久| 蜜桃久久精品一区二区| 国产日韩高清一区二区三区在线| 国产精品99久久免费| 韩国三级一区| 蜜桃视频免费观看一区| 欧美黑人做爰爽爽爽| 久久蜜桃av| 日本午夜精品久久久久| 麻豆91精品91久久久的内涵| 激情综合网五月| 日本欧美韩国一区三区| 久久青青视频| 免费观看在线色综合| 麻豆久久久久久| 欧美精品一区二区三区精品| 国产乱人伦丫前精品视频| 在线亚洲自拍| 欧美91在线|欧美| 日韩精品一区第一页| 日本成人精品| 日韩激情一区| 夜夜精品视频| 久久久久久色| 亚洲精品动态| 免费黄色成人| 国产一区不卡| 欧美日韩一区二区三区在线电影| 久久久夜夜夜| 国产精品任我爽爆在线播放| 自由日本语亚洲人高潮| 麻豆视频久久| 亚洲日本国产| 久久精品av| 国产日产高清欧美一区二区三区| 国产精品久久久久久久免费软件| 色吊丝一区二区| 亚洲欧美专区| 婷婷综合五月| 国产专区精品| 婷婷中文字幕一区| 国产成人77亚洲精品www| 久久福利毛片| 亚洲性色视频| 久久中文欧美| 中文字幕成人| 久久婷婷av| 国产乱码精品一区二区三区四区| 999久久久精品国产| 久久精品国产99国产| 免费日韩精品中文字幕视频在线| 国产超碰精品| 老司机免费视频一区二区| 亚洲精品网址| 深夜福利视频一区二区| 日韩黄色在线观看| 亚洲深夜福利在线观看| 婷婷综合五月| 国产一区二区三区四区二区| 欧美日韩亚洲一区在线观看| 好吊日精品视频| 麻豆一区二区三区| 国产乱人伦丫前精品视频 | 亚洲成人va| 成人一区而且| 国产视频网站一区二区三区| 国产精品社区| 99re国产精品| 激情五月色综合国产精品| 美女久久久久| 日韩中文在线电影| 久久中文在线| 久久一区国产| 亚久久调教视频| 日韩1区2区3区| 久久国产精品99国产| 日韩电影在线视频| 伊人久久视频| 精品理论电影在线| 国产精品红桃| 日韩精品电影一区亚洲| 视频一区免费在线观看| 免费人成在线不卡| 国产综合婷婷| 欧美~级网站不卡| 亚洲一区二区网站| 欧美日韩国产传媒| 黄色亚洲免费| 伊人久久成人| 好吊一区二区三区| 男人天堂欧美日韩| 伊人精品在线| 波多野结衣一区| 精品在线播放| 免费视频最近日韩| 亚洲精品欧美| 国产免费av一区二区三区| 视频一区中文字幕精品| 亚洲一区二区小说| 欧美日韩调教| 国产亚洲一区二区三区啪| 国产精品久久久免费| 国产日韩欧美| 久久久亚洲欧洲日产| 国产成人免费| 成人亚洲精品| 在线看片不卡| 国产视频一区在线观看一区免费| 黄色av日韩| 日韩国产精品久久久| 日本少妇精品亚洲第一区| 久久影视三级福利片| 国产成人精品亚洲线观看 | 久久精品卡一| 午夜在线播放视频欧美| 伊人久久一区| 精品网站999| 国产一区二区三区四区大秀| 成人精品动漫一区二区三区| 亚洲午夜黄色| 影院欧美亚洲| 欧美日韩午夜电影网| 精品视频99| sm捆绑调教国产免费网站在线观看 | 黄色成人精品网站| 日韩成人精品一区| 精品中文一区| 免费观看在线色综合| 精品一二三区| 午夜精品影院| 香蕉成人久久| 国产私拍福利精品视频二区| 麻豆91小视频| 久久三级视频| 欧美性感美女一区二区 | 国产亚洲精品v| 亚洲欧洲美洲国产香蕉| 欧美好骚综合网| av一区二区高清| 国产精品s色| 日韩在线看片| 五月婷婷六月综合| 欧美在线看片| 色爱av综合网| 欧美激情日韩| 色网在线免费观看| 亚洲色图网站| av综合电影网站| 日韩一区精品视频| а√天堂中文在线资源8| 91精品电影| 国产欧美大片| 久久av在线| 视频在线不卡免费观看| 蜜桃视频免费观看一区| 精品一区二区三区中文字幕| 日韩在线免费| 国产精品主播| 国产91精品对白在线播放| 国产三级一区| 四虎4545www国产精品| 国产真实久久| 精品亚洲二区| 亚洲在线一区| 日本精品影院| 欧美日韩黄网站| 欧美日韩免费观看一区=区三区| 国产欧美精品| 91精品99| 五月激情久久| 国产免费av国片精品草莓男男| 香蕉久久国产| www.九色在线| 欧美日韩夜夜| 亚洲精品乱码久久久久久蜜桃麻豆| av资源中文在线| 久久成人av| 在线精品观看| 给我免费播放日韩视频| 国产亚洲人成a在线v网站| 亚洲性色视频| 九九精品调教| 欧美激情视频一区二区三区免费| 日日摸夜夜添夜夜添国产精品| 天堂8中文在线最新版在线|