码迷,mamicode.com
首页 > 其他好文 > 详细

SVN使用钩子函数(post-commit)自动推送到业务服务器

时间:2018-03-28 16:54:57      阅读:349      评论:0      收藏:0      [点我收藏+]

标签:svn

方法对比:update和export对比
update会产生隐藏文件,存在安全隐患,update是增量的,在代码比较大的时候适用
export直接导出干净的代码,不会存在隐藏文件,不适合较大的库

方法一:update

钩子模版: 仓库中hooks目录下post-commint模版可以触发
shell>cp post-commit.tmpl post-commit
shell>chmod +x post-commit
shell>vim post-commit
REPOS="$1" //仓库名
REV="$2" //版本
LOGPATH="/app/log" //存放日志
export LANG=zh_CN.UTF-8
[ ! -d ${LOGPATH} ] && mkdir ${LOGPATH} -p
SVN=/usr/bin/svn
echo "code Deployed by at $REPOS,$REV" >> /app/log/log.log
cd /backup
/usr/bin/svn update --username admin --password 123com /backup //将代码先更新到/backup目录,之前需要通过svn co 导出一份到/backup目录,才能update
if [ $? -eq 0 ]
then
rsync -avz /backup/ rsync_user@x.x.x.x.::backup/ --password-file=/etc/rsync.password
fi

经测试:

如果不
cd /backup 目录下进行update会报错
[root@node104 test]# svn update svn://x.x.x.x:20000/test /backup/
Skipped ‘svn://x.x.x.x:20000/test‘
Skipped ‘/backup‘

方法二:export

shell>vim post-commit
REPOS="$1" //仓库名
REV="$2" //版本
LOGPATH="/app/log" //存放日志
export LANG=zh_CN.UTF-8
[ ! -d ${LOGPATH} ] && mkdir ${LOGPATH} -p
SVN=/usr/bin/svn
echo "code Deployed by at $REPOS,$REV" >> /app/log/log.log
cd /backup
/usr/bin/svn export svn://x.x.x.x:20000/test /backup --force --username abc --password 12345 --no-auth-cache //直接将文件导入/backup,再用sync同步到生成服务器
if [ $? -eq 0 ]
then
rsync -avz /backup/ rsync_user@x.x.x.x.::backup/ --password-file=/etc/rsync.password
fi

注:
--force 是说强制覆盖/backup这个文件夹,避免这个文件夹不为空时报错
--no-auth-cache 是说不缓存用户名和密码,这是出于安全考虑

SVN使用钩子函数(post-commit)自动推送到业务服务器

标签:svn

原文地址:http://blog.51cto.com/7603402/2092039

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!