初试 Git hooks 自动部署

对于经常变动的网站来说, 手动部署是一件非常痛苦的事情

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 hooks 就能满足要求

1. 在 remote host 下创建空仓库

git init -–bare demo // 创建空仓库
cd demo // 进入目录
git clone .... // 把代码 clone 到远程主机
vim  hooks/post-receive // 创建脚本文件
 chmod +x post-receive // 增加执行权限

post-receive 内容如下

  #!/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://[email protected]:port/home/username/demo // 添加远程仓库
npm build
git push prod master // 部署 -> 启动 shell 脚本

运行截图.png

3. 后续操作

后面只需要每次 npm build 之后 把 静态文件也 commit 上去, 然后启动脚本就可以啦😊
nginx path 指向静态文件目录就好啦 = =