**使用 Git Hook 實現網站的自動部署


http://www.tuicool.com/articles/3QRB7jU

自動化能解放人類的雙手,而且更重要的是,因為按照規定的流程來走,也減少了很多誤操作的產生。不知道大家平時都是怎么樣更新自己生產環境的代碼的,FTP 覆蓋舊文件、服務器定時任務去 build 最新的源碼,還是有更高級的做法?

目前我在使用 Git Hook 來部署自己的項目。Git Hook 是 Git 提供的一個鈎子,能被特定的事件觸發后調用。其實,更通俗的講,當你設置了 Git Hook 后,只要你的遠程倉庫收到一次 push 之后,Git Hook 就能幫你執行一次 bash 腳本。

下面是我使用 Git Hook 進行簡單的自動化部署,可能還有更高級的做法,大家自己去挖掘。

在服務器初始化一個遠程 Git 倉庫

git init 和 git --bare init 初始化出來的倉庫是完全不一樣的,具體我 Google 了下,英文倒是理解了,但是要翻譯出中文卻不知道用什么形容詞去稱呼這2種倉庫。

這里我們要通過 git --bare init 初始化一個遠程倉庫

$ cd ~ $ mkdir testRepo $ cd testRepo $ git --bare init 

在服務器初始化一個本地 Git 倉庫

這個倉庫就是通過 git init 初始化出來最常見的本地倉庫,它的作用是拉去遠程倉庫(其實就在它旁邊)最新的源碼,然后在這個倉庫里進行編譯,把代碼編譯到 www 目錄(網站的根目錄)。

$ cd ~ $ mkdir testDeploy $ cd testDeploy $ git clone ~/testRepo #從遠程倉庫 clone 出源碼 

為遠程倉庫設置 Hook

$ cd ~/testRepo/hooks $ vim post-receive 

post-receive 里面的執行腳本

#!/bin/sh unset GIT_DIR DeployPath=/home/user/testDeploy WwwPath=/home/wwwroot/testDeploy  cd $DeployPath git add . -A && git stash git pull origin master  # 下面這2步都是按照實際你自己添加的bash腳本 fis release -Dompd $WwwPath # 我使用的FIS,對前端代碼進行編譯 qrsync /home/user/qiniutools/config.json # 使用七牛同步工具進行同步 

最后,為 post-receive 添加可執行權限

chmod +x post-receive 

為本地倉庫添加 remote 源

這次的本地倉庫就真的是你開發機上面的本地了。在你原有 Git 項目里面添加一條新的 remote 源,以后往這個 remote 源里面 push 代碼就會自動觸發上面那 bash 腳本了。

$ git remote add deploy user@server.ip:/home/user/testRepo $ git push deploy master


免責聲明!

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



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