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