對於常常變更的網站來講, 手動部署是一件很是痛苦的事情nginx
1. login remote host
2. cd ...
3. git pull
4. npm install
5. npm run XXX
...複製代碼
若是是國內主機, 很容易就卡到 npm install
這個步驟, 若是是純靜態的網站, 能夠把 npm install
等其餘構建步驟放在本地來作, 而後把靜態文件放在服務器上再作對應處理.
以前的 Github 開源項目 常常會用 Travis CI 作持續集成, 然而對私有倉庫是收費的, 接下來嘗試了 Gitlab CI , Jenkins 等方式,
Gitlab CI 在本機上跑, 始終提示 command not found
, Google 了一圈不見答案, 放在私有服務器上, swap 立刻佔用完畢, 直接 kill 掉, 公司主服務器不敢作嘗試 ( 大霧 ). 接着是 Jenkins, Jenkins 比較容易, 可是各類插件和繁瑣配置頭疼不已, 尤爲是對私有 gitlab, 私有 npm 等特殊配置, 顯得過於繁瑣, 再其次, 咱們目前須要部署的項目結構比較簡單git
因此說 簡單的 git hooks 就能知足要求shell
git init -–bare demo // 建立空倉庫
cd demo // 進入目錄
git clone .... // 把代碼 clone 到遠程主機
vim hooks/post-receive // 建立腳本文件
chmod +x post-receive // 增長執行權限複製代碼
post-receive 內容以下npm
#!/bin/sh
unset GIT_DIR
echo "begin!!!"
cd /home/username/demo/demo
git pull
pwd
echo "end!!!"
exit 0複製代碼
cd ...demo // 到對應目錄
git remote add prod ssh://username@host:port/home/username/demo // 添加遠程倉庫
npm build
git push prod master // 部署 -> 啓動 shell 腳本複製代碼
後面只須要每次 npm build 以後 把 靜態文件也 commit 上去, 而後啓動腳本就能夠啦😊
nginx path 指向靜態文件目錄就好啦 = =vim