svn发布脚本

下面这个脚本应该日常运维的工作中应该经常使用的到,适合全量、增量发布。
假如svn地址是svn://192.168.1.1/trunk,下面有test、release等目录。每个目录下有当前日期命名的目录。目录里面就是开发的程序,目录结构如下:
svn://192.168.1.1/trunk
release
20131223
20131224
test
20131223
20131224
脚本的目的是通过svn自动发布程序。这个脚本在内网平常都是开发同事自动发布,也为运维省去了一大部分的工作量。脚本内容如下:

 

#!/usr/bash
#版本发布工具
svnPath="svn://192.168.1.1/trunk";                 =======>svn路径
svnDir="/var/svn/www";                                  =======>发布机上svn目录,注意这些目录不需要创建。
webDir="/opt/www";                                     =======>发布机上的应用目录,注意这些目录不需要创建。
echo "请选择要发布的版本类型"
deployTarget=`svn list ${svnPath}`
select deployTarget in $deployTarget
 do
   break;
done;
echo "请选择发布分支";
if [ "${deployTarget}" == 'test/']; then
   select tasks in `svn list ${svnPath}/test`
   do
          tasks=${tasks///};
          svnUrl="${svnPath}/test/${tasks}";
          break;
   done;
fi
if [ "${deployTarget}" == 'release/']; then
   select tasks in `svn list ${svnPath}/release`
   do
          tasks=${tasks///};
          svnUrl="${svnPath}/release/${tasks}";
          break;
   done;
fi
choose="yes no"
echo "请确认svn地址: ${svnUrl}";
select comfirm in $choose
do
   if [ "${comfirm}" != "yes" ];then
          echo "发布程序结束";
          exit 0;
   fi
   break;
done;
hasSvnRevison=`svn log -r PREV:HEAD ${svnDir} | grep "------"`;
if [ "${hasSvnRevison}" == "" ]; then
   echo "检出svn目录"
   svn co ${svnUrl} "${svnDir}";
else
   echo "切换svn目录"
   svn sw ${svnUrl} "${svnDir}";
fi
rsync -av --exclude=".svn/" --delete --delete-after ${svnDir}/ ${webDir}

最重要的内容都如上显示,但是一般发布机和应用不应该在一台服务器(为了防止网络中断啥的),然后就是需要做一个ssh无密码认证,将发布机上的${webDir}目录同步到应用程序那台服务器的应用目录下即可!至于你还需要校验权限,或者替换一些配置文件啥的,你都可以在脚本里面定义好!

标签: 无
返回文章列表 文章二维码
本页链接的二维码
打赏二维码