git 利用hook 實現服務器自動更新代碼

如何利用git的hook實現提交代碼後自動更新?

由於我的開發常常須要提交代碼,每次都須要鏈接服務器去pull代碼,重啓服務器就顯得十分繁瑣,所以github提供了一個時間鉤子,用戶push代碼後能夠通知指定服務器進行操做html

編寫服務器腳本

腳本僅僅用於接受代碼託管服務器的通知,所以應該儘可能比較各類依賴問題,因此咱們選擇在linux自帶的python2 上開發,使用原生的wsgiref模塊python

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腳本執行linux

cd '/website/YourProject'
git pull
uwsgi --reload /website/YourProject/uwsgi.pid
ps -ef | grep uwsgi

server的啓動直接使用CMD:nohup python server.py &
最後就是設置git的webhook 而後push代碼 服務器就會自動同步了git

相關文章
相關標籤/搜索