• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >windows > svn全自动化更新

svn全自动化更新

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含svn自动更新,linux svn自动更新,svn更新,svn更新代码,svn更新不了等服务器相关知识,网友希望可以进行参考

首先在这里我要说很多,

需求:

   1.我写任何脚本的核心要求就是必须得有一台跳板机,单方面认证即可

   2.需要一台服务器挂载前台所有web站点

   3.需要一个报警通知的接口

个人对自动的化上线的理解:

   1.执行上线脚本就可以高枕无忧,把脚本放到后台就可以了

   2.如何达到高枕无忧,svn自动化上线实现起来不简单

一.备份块

   楼主在备份这块现在还是比较犹豫,楼主有两个想法

   (1)不需要备份,可以利用-r+版本号回退到上一个版本,但是有弊端,比如测试经常会上错包,这个不能只靠着别人不犯错

   (2)每台web全路径备份,回滚会很快,但是有些没有必要,比如我这次上线,只上个jsp文件,我也要全备份吗,这样务必会影响效率


   楼主现在还是选择了第二个方案

二.上线块    

   1)svn上线会有自己的弊端,比如手动更新线上的文件,下次再更新此包就会出现G的问题,代表此文件没有更新成功

    (2)svn上线如果之前版本库里没有此文件,而你又手动上了一个文件,在手动上线后,svn更新会报错

    (3)楼主的前台web,有23台之多,分为6个集群,每个集群的路径和进程名都不同,如何实现判断每次更新的群组

    (4)如此庞大的web集群,如何能够精简脚本的行数

三.检测块

    (1)自动化的精髓就是检测,无检测何来的自动化

    (2)检测前台集群所有web在上线过程中,500错是否正常

    (3)检测前台nginx日志,500错是否正常

    (4)检测svn上线是否文件都更新成功了,只针对上线文件比对md5码


下面贴上代码

第一部分上线篇

楼主有个公用函数脚本,这才是核心脚本

vim function.sh

#!/bin/bash
one=$1    
two=$2
three=/svnlog/$3
date=`date +%Y%m%d%H%M`
function youyuanjar(){
  echo "--------------------------resin restart--------------------------------"  2>&1 | tee -a /tmp/shangxianlog/svn.$one
  echo "---------------------------------$one------------------------------------"  2>&1 | tee -a /tmp/shangxianlog/svn.$one
  ssh $two "sh /usr/local/resin/bin/resin.sh stop -server youyuan" 2>&1 | tee -a /tmp/shangxianlog/svn.$one
  echo "$one stopped" 2>&1 | tee -a /tmp/shangxianlog/svn.$one
  sleep 3
  ssh $two "cp -rf /www/youyuan.com.1/htdocs /opt/$date"
  e=`cat  $three |grep -v Updated|awk -F "/" '{print $(NF-1)"/"$NF}'`
       for i in $e
       do
               ssh $two "rm -f /www/youyuan.com.1/$e"
               if [ "$?" -eq 0 ]; then
                       echo delet ok
               fi
       done
  ssh $two "svn up $svnversion /www/youyuan.com.1/htdocs" 2>&1 | tee -a /tmp/shangxianlog/svn.$one
  echo "$one svnup ok " 2>&1 | tee -a /tmp/shangxianlog/svn.$one
  sleep 15
  b=($(cat  $three |grep -v Updated|awk -F "/" '{print $NF}'|awk -F "." '{print $1}'))
  c=($(cat  $three |grep -v Updated|awk -F "/" '{print $(NF-1)"/"$NF}'))
       echo $c
       for ((d=0;d<${#c[@]};d++))
       do
               touch /home/shangxianlog/${b[$d]}
               a=`ssh $two "md5sum /www/youyuan.com.1/${c[$d]}"`
               echo $two $a >> /home/shangxianlog/${b[$d]}
       done
  ssh $two "sh /usr/local/resin/bin/resin.sh restart -server youyuan" 2>&1 | tee -a /tmp/shangxianlog/svn.$one
  sleep 20
  echo "$one restart " 2>&1 | tee -a /tmp/shangxianlog/svn.$one
}
function iosjar(){
  touch /tmp/shangxianlog/svni.$one
  echo "--------------------------resin restart--------------------------------"  2>&1 | tee -a /tmp/shangxianlog/svni.$one
  echo "---------------------------------$one------------------------------------"  2>&1 | tee -a /tmp/shangxianlog/svni.$one
  ssh $two "sh /usr/local/resin/bin/resin.sh stop -server ios" 2>&1 | tee -a /tmp/shangxianlog/svni.$one
  echo "$one stopped" 2>&1 | tee -a /tmp/shangxianlog/svni.$one
  sleep 3
  ssh $two "cp -rf /www/ios.youyuan.com/htdocs /opt/ios$three"
    c=`cat  $three |egrep '(ios|iosui|css|lib)'|grep -v Updated|awk -F "/" '{print $(NF-1)"/"$NF}'`
       echo $c
       for d in $c
       do
               ssh $two "rm -f /www/ios.youyuan.com/$d"
               if [ "$?" -eq 0 ]; then
                       echo delet ok
               fi
       done
  ssh $two "svn up $svnversion /www/ios.youyuan.com/htdocs/WEB-INF/lib" 2>&1 | tee -a /tmp/shangxianlog/svni.$one
  ssh $two "svn up $svnversion /www/ios.youyuan.com/htdocs/WEB-INF/ios" 2>&1 | tee -a /tmp/shangxianlog/svni.$one
  ssh $two "svn up $svnversion /www/ios.youyuan.com/htdocs/WEB-INF/iosui" 2>&1 | tee -a /tmp/shangxianlog/svni.$one
  ssh $two "svn up $svnversion /www/ios.youyuan.com/htdocs/css/" 2>&1 | tee -a /tmp/shangxianlog/svni.$one
  echo "$one svnup ok " 2>&1 | tee -a /tmp/shangxianlog/svni.$one
  ssh $two "sh /usr/local/resin/bin/resin.sh restart -server ios" 2>&1 | tee -a /tmp/shangxianlog/svni.$one
  sleep 20
  echo "$one restart " 2>&1 | tee -a /tmp/shangxianlog/svni.$one
}
function ios(){
  touch /tmp/shangxianlog/svni.$one
  echo "---------------------------------$oneios------------------------------------"  2>&1 | tee -a /tmp/shangxianlog/svni.$one
    ssh $two "cp -rf /www/ios.youyuan.com/htdocs /opt/ios$three"
    c=`cat  $three |egrep '(ios|iosui|css)'|grep -v Updated|awk -F "/" '{print $(NF-1)"/"$NF}'`
       echo $c
       for d in $c
       do
               ssh $two "rm -f /www/ios.youyuan.com/$d"
               if [ "$?" -eq 0 ]; then
                       echo delet ok
               fi
       done
  ssh $two "svn up $svnversion /www/ios.youyuan.com/htdocs/WEB-INF/ios" 2>&1 | tee -a /tmp/shangxianlog/svni.$one
  ssh $two "svn up $svnversion /www/ios.youyuan.com/htdocs/WEB-INF/iosui" 2>&1 | tee -a /tmp/shangxianlog/svni.$one
  ssh $two "svn up $svnversio

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • svn全自动化更新

相关文章

  • Exchange Server 2010 邮件发送延迟排错
  • 通过修改注册表更改windows7的UAC方法
  • KVM虚拟机网络性能优化
  • IIS开启Gzip失败的决方法和如何开启gzip
  • 电脑忘记密码之找回密码的方法大汇总
  • 通过编辑BCD文件给WIN7光盘添加PE启动引导菜单
  • Virtualbox下fedora访问windows下的共享文件夹方法
  • Windows系统蓝屏错误代码分析
  • aspx禁止跨站、禁止读取iis信息、禁止cmd命令执行
  • 让服务器apache/iis/nginx支持.apk/ipa文件下载

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • PXE+DHCP+Apache+Kickstart自动安装CentOS
    • 如何禁止登陆QQ聊天系统
    • LNMP基于fastcgi实现nginx,php,mysql的分离
    • windows同时安装apahce和iis教程
    • 六、在不停止Nginx服务的情况下平滑变更Nginx配置【LNMP安装 】
    • 如何在硬盘安装windows server 2008
    • VMware tools下载与VMware tools安装方法
    • iis服务器设置网站默认首页方法
    • 如何将文件所有者改为TrustedInstaller
    • Exadata VM CELL 上添加新磁盘--扩充空间

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有