git hooks实现代码自动部署

git的自动部署主要用到git的post-receive钩子

准备:
在服务器上创建git仓库
1.普通仓库(与代码目录结构一致)

git init
image.png

或者
1.裸仓(只保存配置信息)项目打包上传选择

git --bare init
image.png

创建好仓库 找到钩子所在位置
普通仓库在 .git/hoos/下
裸仓在 hooks/下

在hooks目录中 创建post-receive文件
普通仓库

#!/bin/sh
DEPLOY_PATH=/home/wwwroot/default/myproject/
# git的hooks里面默认有一些环境变量,会导致无论在哪个语句之后执行git命令都会有一个默认的环境路径,既然这样unset 掉默认的GIT环境变量就可以了。
unset  GIT_DIR 
cd $DEPLOY_PATH
git reset --hard
git pull
chown www:www -R $DEPLOY_PATH

裸仓

#!/bin/sh
DEPLOY_PATH=/home/wwwroot/default/myproject/

git archive --format zip --output /path/to/file.zip master # 将 master 以zip格式打包到指定文件(裸仓库中执行)
mv /path/to/file.zip $DEPLOY_PATH #将打包好的剪切到web目录
unset GIT_DIR #不设置git的默认环境变量
cd $DEPLOY_PATH
unzip -o file.zip #解压覆盖
rm -rf file.zip #删除
chown www:www -R $DEPLOY_PATH

你可能感兴趣的:(git hooks实现代码自动部署)