初试 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

相关文章
相关标签/搜索