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


如何利用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代碼 服務器就會自動同步了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM