欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Python項(xiàng)目中的github自動(dòng)化部署怎么利用Webhook實(shí)現(xiàn)-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)Python項(xiàng)目中的github自動(dòng)化部署怎么利用Webhook實(shí)現(xiàn),文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

成都創(chuàng)新互聯(lián)堅(jiān)信:善待客戶,將會(huì)成為終身客戶。我們能堅(jiān)持多年,是因?yàn)槲覀円恢笨芍档眯刨?。我們從不忽悠初訪客戶,我們用心做好本職工作,不忘初心,方得始終。10余年網(wǎng)站建設(shè)經(jīng)驗(yàn)成都創(chuàng)新互聯(lián)是成都老牌網(wǎng)站營銷服務(wù)商,為您提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、html5、網(wǎng)站制作、品牌網(wǎng)站制作、小程序設(shè)計(jì)服務(wù),給眾多知名企業(yè)提供過好品質(zhì)的建站服務(wù)。

一. 分析需求


1. 需求說明

在項(xiàng)目開發(fā)過程中,我們有時(shí)會(huì)頻繁的更新代碼, 流程大概為:

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

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

(3) cd到項(xiàng)目根目錄, 執(zhí)行g(shù)it pull 指令拉取新代碼

Python項(xiàng)目中的github自動(dòng)化部署怎么利用Webhook實(shí)現(xiàn)

整個(gè)流程純手動(dòng)更新,每次耗時(shí)在1分鐘左右, 這樣一天下來,浪費(fèi)了很多時(shí)間在這些瑣碎的事情上.

現(xiàn)在的需求是,在每次本地提交代碼后,線上服務(wù)器自動(dòng)拉取新代碼,完成部署更新.即所謂的自動(dòng)化部署.

2. 方案

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

附webhook的簡介:

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

方案流程:

Python項(xiàng)目中的github自動(dòng)化部署怎么利用Webhook實(shí)現(xiàn)

所以自動(dòng)部署主要實(shí)現(xiàn)方式就是:

- 修改代碼 push

- github(其他倉庫平臺(tái))發(fā)送請求給你的網(wǎng)站服務(wù)器

- 網(wǎng)站服務(wù)器收到更新請求,執(zhí)行自動(dòng)部署腳本

- 自動(dòng)部署腳本執(zhí)行代碼拉取,打包,修改文件等動(dòng)作完成網(wǎng)站的更新部署

二、具體實(shí)現(xiàn)


Github倉庫設(shè)置


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


Python項(xiàng)目中的github自動(dòng)化部署怎么利用Webhook實(shí)現(xiàn)

編寫GitHub推送回調(diào)


python開啟web服務(wù)(hook.py)

import hmac
import os
from flask import Flask, request, jsonify

app = Flask(__name__)
# github中webhooks的secret
github_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參數(shù)中
  """
  post_data = request.data
  token = encryption(post_data)
  # 認(rèn)證簽名是否有效
  signature = request.headers.get('X-Hub-Signature', '').split('=')[-1]
  if signature != token:
    return "token認(rèn)證無效", 401
  # 運(yùn)行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 pull
echo '-----Already up-to-date------'
echo '----- restart supervision-----'
supervisorctl restart blog
echo '----- reload nginx-----'
nginx -s reload


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

開啟服務(wù)


supervisor部署webhook


[program:webhook]
directory=/data/wwwroot/docs
command=/home/dukenan/.envs/flask_py3/bin/python3 hook.py
autostart=true
autorestart=false
startsecs=1
;使用root賬戶
user=root
stderr_logfile=/etc/supervisor/logs/webhooks/stderr.log 
stdout_logfile=/etc/supervisor/logs/webhooks/stdout.log 
redirect_stderr=true
loginfo=info

部署NGINX的參考


server {
  listen 80; 
  server_name 服務(wù)器IP; # 配置域名
  client_max_body_size 300M;
  location / { 
    proxy_pass http://127.0.0.1:8989; #轉(zhuǎn)發(fā)本地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;
  }  
}

關(guān)于Python項(xiàng)目中的github自動(dòng)化部署怎么利用Webhook實(shí)現(xiàn)就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

網(wǎng)站名稱:Python項(xiàng)目中的github自動(dòng)化部署怎么利用Webhook實(shí)現(xiàn)-創(chuàng)新互聯(lián)
路徑分享:http://chinadenli.net/article10/djggdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、手機(jī)網(wǎng)站建設(shè)、外貿(mào)建站、網(wǎng)站內(nèi)鏈、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
日韩精品在线观看一区| 国产日韩中文视频一区| 亚洲男人天堂网在线视频| 日韩人妻精品免费一区二区三区 | 91亚洲国产—区=区a| 五月婷婷缴情七月丁香 | 亚洲人妻av中文字幕| 中文字幕日韩精品人一妻| 色丁香之五月婷婷开心| 九九久久精品久久久精品| 日本人妻免费一区二区三区| 日本久久精品在线观看| 国产三级视频不卡在线观看| 在线观看视频日韩成人| 九九蜜桃视频香蕉视频| 日本欧美视频在线观看免费| 东京热男人的天堂一二三区 | 日韩国产欧美中文字幕| 男女激情视频在线免费观看| 久久免费精品拍拍一区二区| 91超频在线视频中文字幕| 久热人妻中文字幕一区二区| 激情内射亚洲一区二区三区| 国产精品视频一区麻豆专区| 黑丝国产精品一区二区| 国产又粗又猛又爽又黄| 国产在线成人免费高清观看av| 五月婷婷欧美中文字幕| 黑色丝袜脚足国产一区二区| 日本东京热视频一区二区三区| 免费在线成人激情视频| 国产免费操美女逼视频| 五月婷婷综合缴情六月| 日韩欧美一区二区亚洲| 欧美精品久久一二三区| 欧美av人人妻av人人爽蜜桃| 国产香蕉国产精品偷在线观看 | 婷婷九月在线中文字幕| 中文字幕一区二区久久综合| 欧美日韩国产综合特黄| 日韩和欧美的一区二区三区 |