初試 Git hooks 自動部署

對於常常變更的網站來講, 手動部署是一件很是痛苦的事情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

1. 在 remote host 下建立空倉庫

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複製代碼

2. 本機設置

cd ...demo // 到對應目錄
git remote  add prod  ssh://username@host:port/home/username/demo // 添加遠程倉庫
npm build
git push prod master // 部署 -> 啓動 shell 腳本複製代碼

運行截圖.png

3. 後續操做

後面只須要每次 npm build 以後 把 靜態文件也 commit 上去, 而後啓動腳本就能夠啦😊
nginx path 指向靜態文件目錄就好啦 = =vim

相關文章
相關標籤/搜索