使用钩子 post-commit触发同步代码
post-commit是在版本提交之后处理一些动作
1,安装svn
yum install subversion
2,创建版本库目录
svnadmin create /svn/svndate/web1
3,修配置文件
sed -i 's/# anon-access = read/anon-access = none/g' svnserve.conf.bak
sed -i 's/# password-db = passwd/password-db = passwd/g' svnserve.conf.bak
sed -i 's/# auth-access = write/auth-access = write/g' svnserve.conf.bak
sed -i 's/# realm = My First Repository/realm = web1/g' svnserve.conf.bak
sed -i 's/# authz-db = authz/authz-db = authz/g' svnserve.conf.bak
4,添加账户密码文件
echo mark1 mark1 >>passwd
5,修改权限
cat >>authz<<EOF
admin = mark,mark1
[web1:/]
@admin = rw
* = r
EOF
启动
svnserver -d -r /svn/svndate
输入用户密码即可
6,将web1拉取到svnserver的svnupdate中,rsync会从server本地推送到远端
svn co svn://10.10.233.19/web1/ /svnupdate/ --username=mark1 --password=mark1
7,进入web1 hooks中添加脚本,当web1有更新则会自动rsync到远程服务器节点
vim post-commit
#!/bin/bash
# www.111cn.net
#this post-commit
IP=10.10.238.94
REPOS="$1"
REV="$2"
export LC_CTYPE="en_US.UTF-8"
export LC_ALL=
#export LANG=en_US.UTF-8
LOGPATH="/app/log"
[ ! -d ${LOGPATH} ] && mkdir ${LOGPATH} -p
#update content from svn
SVN=/usr/bin/svn
$SVN update /svnupdate --username mark1 --password mark1
if [ $? -eq 0 ]
then
/usr/bin/rsync -az --delete /svnupdate/ root@$IP:/var/www/html
fi
修改权限
chmod +700 post-commit