使用githook发布项目

githook部署存在代码回滚的问题

创建相关目录

mkdir gitserver
cd gitserver/
git --bare init
cd ..
mkdir gitclient
cd gitclient/
git clone ../gitserver/

post-receive 脚本内容

unset GIT_DIR
gitclient=/home/zbei/gitclient/gitserver

cd $gitclient
git reset --hard origin/master
git add . -A
git stash
git pull origin master

设置权限

chmod +x post-receive

注意权限问题,不要在服务器上用root用户git pull, 这样一些文件的权限会变为root, 就混乱了, 下次 www用户push后就无法通过webhook部署了
sudo -u www git push

配置git全局配置和项目权限

git config --global user.name “xxx”
git config --global user.email “xxx@xxx.com"

chown -R www:www /alidata/www/default/movie

附1,tar上传部署脚本:

#!/bin/sh
cd /home/user/111/
rm /home/user/111/* -rf
tar zxvf ../$1
chmod 744 /home/user/111/* -R
chown www.www /home/user/111/* -R
/bin/cp ./* /work/web/xxx.com/ -R --preserve=all
rm /home/user/$1 -f
rm /home/user/111/* -rf

附2,tar打包git最近几次修改的文件

BRANCH="master"
file="sha_"$BRANCH
git stash
git checkout $BRANCH
git pull origin $BRANCH
git diff --name-only HEAD $(cat $file) >>sha_log
echo   `date "+%Y-%m-%d %H:%M:%S"`"====================" >>sha_log
tar zcvf file.tar.gz  `git diff --name-only HEAD $(cat $file)`
echo `git log --pretty=format:"%H" -n 1`  > $file

自动部署可能会用到的工具有:
1.通过http网页上传
2.git hook
代码同步
1.rsync
2.SCP

发表评论

电子邮件地址不会被公开。 必填项已用*标注