对于常常变更的网站来讲, 手动部署是一件很是痛苦的事情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