如何利用git的hook實現提交代碼后自動更新?
因為個人開發經常需要提交代碼,每次都需要連接服務器去pull代碼,重啟服務器就顯得十分繁瑣,因此github提供了一個時間鈎子,用戶push代碼后可以通知指定服務器進行操作
編寫服務器腳本
腳本僅僅用於接受代碼托管服務器的通知,因此應該盡量比較各種依賴問題,所以我們選擇在linux自帶的python2 上開發,使用原生的wsgiref模塊
from wsgiref.simple_server import make_server
import os
def run(env,start_response):
url=env['PATH_INFO']
if url=="/githook/":
out=os.system('/website/Tadmin/pub.sh')
start_response('200 OK', [('Content-Type', 'text/html')])
return str(out)
start_response('200 OK', [('Content-Type', 'text/html')])
return "hello"
if __name__ == '__main__':
httpd = make_server('', 8080, run)
print "server running on 8080"
httpd.serve_forever() #allays running
當知道服務器有新的push,可以在客戶端執行一系列的更新操作,在上面我們直接調用了shell腳本執行
cd '/website/YourProject'
git pull
uwsgi --reload /website/YourProject/uwsgi.pid
ps -ef | grep uwsgi
server的啟動直接使用CMD:nohup python server.py &
最后就是設置git的webhook 然后push代碼 服務器就會自動同步了