利用SVN的POST-COMMIT钩子自动部署代码

2014/09/25 posted in  服务端
Tags:  #linux #shell

date: 2014-09-25 20:50

利用SVN的POST-COMMIT钩子自动部署代码

我们在开发的过程将代码提交到SVN后使用SVN的hook,通过post-commit脚本,在目
标文件夹根下执行svn update操作,将更新内容同步到测试环境,这样开发调试非常方便。

post-commit内容:

!/bin/sh

修改为服务编码

export LANG=zh_CN.gb2312

Set variable

REPOS="\(1"
REV="\)2"

SVN=/usr/bin/svn
WEB=/data/home/htdocs
LOG=/data/home/auto_svn.log

update the code from the SVN

\(SVN update \)WEB --username username --password password --non-interactive

......................

if [ $? == 0 ]
then

echo  "$REPOS" "$REV" >> $LOG
echo `date` >> $LOG
echo "##############################" >> $LOG

fi

需要注意:
1、需要用export指定编码。
2、需要指定svn全路径。
3、代码CO出来之后,可以进行post-commit脚本的测试了。因为svn的hooks执行的时候不带有任何的环境变量,所以我们不能通过简单的 ./post-commit 进行代码的测试。必须要使用sudo su 等命令切换到svn或者apache服务器运行用户下,用下面的方法进行测试
Python代码

env – ./post-commit