Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1082021
  • 博文数量: 83
  • 博客积分: 159
  • 博客等级: 上尉
  • 技术积分: 2221
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-15 17:08
个人简介

……致我那曾经苦逼的岁月……

文章分类
文章存档

2018年(1)

2017年(7)

2016年(13)

2014年(1)

2013年(12)

2012年(27)

2011年(22)

分类: 系统运维

2013-12-24 20:25:13

下面这个脚本应该日常运维的工作中应该经常使用的到,适合全量、增量发布。
假如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}目录同步到应用程序那台服务器的应用目录下即可!至于你还需要校验权限,或者替换一些配置文件啥的,你都可以在脚本里面定义好!

阅读(3193) | 评论(1) | 转发(2) |
1

上一篇:vsftp需求

下一篇:nginx缓存配置

给主人留下些什么吧!~~

CU博客助理2014-03-10 16:36:13

专家点评:不错的工作经验分享,对于SVN的学习和使用者是很好的参考资料,但较简单, 希望作者以后继续更新完善,并注意排版,代码请使用代码框。
(感谢您参与“原创博文评选”获奖结果即将公布)