环境

Ubuntu 16.04 TLS

git 2.7.4

git远程仓库跟项目部署目录,在同一台服务器上。

以gitbook为例

开始

编辑远程仓库下的文件:

gitbook.git/hooks/post-receive

#!/bin/bash

# 设置部署根目录
homedir="/mnt/gitbook"

# 判断要部署的分支
while read oldrev newrev refname  # 读取stdin
do
  branch=$(git rev-parse --symbolic --abbrev-ref $refname)
  if [ "master" == "$branch" ]; then  # 判断master分支,才执行部署操作
    GIT_WORK_TREE=$homedir git checkout -f
    echo 'building'
    cd "$homedir" && gitbook install && gitbook build  # gitbook插件安装,然后build
    echo 'build done'
  else
    echo 'push done'  # 其他分支,只显示push成功
  fi
done