自動化能解放人類的雙手,並且更重要的是,由於按照規定的流程來走,也減小了不少誤操做的產生。不知道你們平時都是怎麼樣更新本身生產環境的代碼的,FTP 覆蓋舊文件、服務器定時任務去 build 最新的源碼,仍是有更高級的作法?前端
目前我在使用 Git Hook 來部署本身的項目。Git Hook 是 Git 提供的一個鉤子,能被特定的事件觸發後調用。其實,更通俗的講,當你設置了 Git Hook 後,只要你的遠程倉庫收到一次 push 以後,Git Hook 就能幫你執行一次 bash 腳本。git
下面是我使用 Git Hook 進行簡單的自動化部署,可能還有更高級的作法,你們本身去挖掘。web
git init
和 git --bare init
初始化出來的倉庫是徹底不同的,具體我 Google 了下,英文卻是理解了,可是要翻譯出中文殊不知道用什麼形容詞去稱呼這2種倉庫。json
這裏咱們要經過 git --bare init
初始化一個遠程倉庫vim
1
2
3
4
|
$
cd ~
$ mkdir
testRepo
$
cd testRepo
$ git --bare init
|
這個倉庫就是經過 git init
初始化出來最多見的本地倉庫,它的做用是拉去遠程倉庫(其實就在它旁邊)最新的源碼,而後在這個倉庫裏進行編譯,把代碼編譯到 www 目錄(網站的根目錄)。segmentfault
1
2
3
4
5
6
7
8
9
10
11
|
$
cd ~
$ mkdir
testDeploy
$
cd testDeploy
$ git
clone ~/testRepo #從遠程倉庫 clone 出源碼
```
### 爲遠程倉庫設置 Hook
```bash
$
cd ~/testRepo/hooks
$ vim post-receive
|
post-receive
裏面的執行腳本bash
1
2
3
4
5
6
7
8
9
10
11
12
|
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
添加可執行權限服務器
1
|
chmod +x post-receive
|
此次的本地倉庫就真的是你開發機上面的本地了。在你原有 Git 項目裏面添加一條新的 remote 源,之後往這個 remote 源裏面 push 代碼就會自動觸發上面那 bash 腳本了。工具
1
2
|
$ git remote add deploy user@server.ip:/home/user/
testRepo
$ git push deploy master
|
https://dearb.me/archive/2015-03-30/automate-deploy-your-websites-with-git-hook/post