自動化能解放人類的雙手,而且更重要的是,因為按照規(guī)定的流程來走松嘶,也減少了很多誤操作的產(chǎn)生。不知道大家平時都是怎么樣更新自己生產(chǎn)環(huán)境的代碼的挎扰,F(xiàn)TP 覆蓋舊文件翠订、服務(wù)器定時任務(wù)去 build 最新的源碼,還是有更高級的做法遵倦?
目前我在使用 Git Hook 來部署自己的項目尽超。Git Hook 是 Git 提供的一個鉤子,能被特定的事件觸發(fā)后調(diào)用梧躺。其實似谁,更通俗的講,當你設(shè)置了 Git Hook 后,只要你的遠程倉庫收到一次 push 之后巩踏,Git Hook 就能幫你執(zhí)行一次 bash 腳本秃诵。
下面是我使用 Git Hook 進行簡單的自動化部署,可能還有更高級的做法塞琼,大家自己去挖掘菠净。
在服務(wù)器初始化一個遠程 Git 倉庫
git init 和 git --bare init 初始化出來的倉庫是完全不一樣的,具體我 Google 了下屈梁,英文倒是理解了嗤练,但是要翻譯出中文卻不知道用什么形容詞去稱呼這2種倉庫。
這里我們要通過 git --bare init 初始化一個遠程倉庫
$ cd ~
$ mkdir testRepo
$ cd testRepo
$ git --bare init
在服務(wù)器初始化一個本地 Git 倉庫
這個倉庫就是通過 git init 初始化出來最常見的本地倉庫在讶,它的作用是拉去遠程倉庫(其實就在它旁邊)最新的源碼煞抬,然后在這個倉庫里進行編譯,把代碼編譯到 www 目錄(網(wǎng)站的根目錄)构哺。
$ cd ~
$ mkdir testDeploy
$ cd testDeploy
$ git clone ~/testRepo #從遠程倉庫 clone 出源碼
為遠程倉庫設(shè)置 Hook
$ cd ~/testRepo/hooks
$ vim post-receive
post-receive 里面的執(zhí)行腳本
#!/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 添加可執(zhí)行權(quán)限
chmod +x post-receive
為本地倉庫添加 remote 源
這次的本地倉庫就真的是你開發(fā)機上面的本地了曙强。在你原有 Git 項目里面添加一條新的 remote 源残拐,以后往這個 remote 源里面 push 代碼就會自動觸發(fā)上面那 bash 腳本了。
$ git remote add deploy user@server.ip:/home/user/testRepo
$ git push deploy master