autopackstepCompile-BASE.bat

setlocal EnableDelayedExpansion


echo *********************************************************
echo 脚本功能:O4基础、合规、UFT的打包、升级环境、后台编译等。
echo 脚本编写:
echo 修订时间:2015.1.7
echo *********************************************************


rem 主流程
:main
    rem SVN更新(在Jenkins中执行)


    rem 初始配置
    call %Workspace%\initTMP.bat
    call %Workspace%\autopack\BASE_20160122_LS\initNEW2-BASE.bat
    
 
    rem Debugtool导出日志和配置文件
    rem call :Expinfo
 
    rem 打包升级包
    call :PackUp
    
    rem 升级环境
    call :ExecSQLJC


    rem 编译基础清算后台服务
    call :Compilesrc
    
    rem 下载服务端so
    call :DownloadSo
    
    rem 检查错误日志
    call :Checklog
    
    rem 压缩包
    call :PackPkg
    
    rem 提交SVN
    call :SVNcommit


goto :eof


exit /b




exit /b




rem ==========================Debugtool导出日志和配置文件============================================
:Expinfo


    echo DEBUG导出前时间:%time% >>%LogDir%\计算时间.log
    rem     通过DebugTools导出日志和配置文件
    rem     DebugTools路径 %DebugTools%  
    cd /d %DebugTools%
    DebugTools.exe file=%Workspace%\base\Run\buildscript\autopack\DebugTools.bat
    
    echo 导出debugtool日志
    xcopy /e /q /y  %SrcDir%\base\Run\buildscript\autopack\debugtool\DebugTools.log %LogDir%\
    del /q  %SrcDir%\base\Run\buildscript\autopack\debugtool\DebugTools.log
 
    echo DEBUG导出后时间:%time% >>%LogDir%\计算时间.log
 
    echo 导出日志和配置文件完成。
goto :eof




rem ==========================打包升级包======================================================
:PackUp
    echo 打包升级包前时间:%time% >>%LogDir%\计算时间.log


    echo 打包CRES基础包......
    xcopy /e /q /y "%SrcDir%\base\Run\as2.0_x64" "%TarDir%\%PackName%\as2.0_x64\"
    
    echo 打包debugtool等工具.....
    xcopy /e /q /y %SrcDir%\Tools\升级部署工具\setupuft %TarDir%\%PackName%\Tools\升级部署工具\
    xcopy /e /q /y %SrcDir%\Tools\委托对比工具 %TarDir%\%PackName%\Tools\委托对比工具\
    rem 自动升级工具中,删除UFT模板
    del /q %TarDir%\%PackName%\Tools\升级部署工具\UFTSetup0930模板_交易查询_不分离.xls,%TarDir%\%PackName%\Tools\升级部署工具\UFTSetup0930模板_交易查询_分离.xls


    echo 打包O32同步脚本......
    xcopy /e /q /y "%SrcDir%\base\Sources\Script\03.O32升级脚本" "%TarDir%\%PackName%\o4_o32\Script\"
    
    echo 打包MC、jrar、bar1、bar2
    xcopy /e /q /y %SrcDir%\base\Run\updatepkg\消息中心\workspace  %TarDir%\%PackName%\mc\配置文件\workspace\
    xcopy /e /q /y %SrcDir%\base\Run\updatepkg\消息中心\appcom  %TarDir%\%PackName%\mc\appcom\
    xcopy /e /q /y %SrcDir%\base\Run\updatepkg\接入AR  %TarDir%\%PackName%\jrar\配置文件\
    xcopy /e /q /y %SrcDir%\base\Run\updatepkg\总线AR1  %TarDir%\%PackName%\bar1\配置文件\ 
    xcopy /e /q /y %SrcDir%\base\Run\updatepkg\总线AR2  %TarDir%\%PackName%\bar2\配置文件\ 
       
    echo 打包newtran
    xcopy /e /q /y "%SrcDir%\UFT2.0\Sources\newtran\bin" "%TarDir%\%PackName%\newtran\"
    
    echo 打包基础子系统......
    xcopy /e /q /y %SrcDir%\base\Sources\Src %TarDir%\%PackName%\base\Src\
    xcopy /e /q /y %SourcesDirSrc%\%AresProject% %TarDir%\%PackName%\base\Src\
    xcopy /e /q /y %SrcDir%\base\Sources\Script  %TarDir%\%PackName%\base\Script\ 
    rmdir /s /q %TarDir%\%PackName%\base\Script\03.O32升级脚本 
    del /q %TarDir%\%PackName%\base\Script\02.安装脚本\hshg_update.sql 
    del /q %TarDir%\%PackName%\base\Script\02.安装脚本\hsqs_update.sql
    del /q %TarDir%\%PackName%\base\Script\02.安装脚本\hshis_update.sql 
    xcopy /e /q /y %SrcDir%\base\Run\updatepkg\基础逻辑  %TarDir%\%PackName%\base\配置文件\基础逻辑\ 
    xcopy /e /q /y %SrcDir%\base\Run\updatepkg\基础原子  %TarDir%\%PackName%\base\配置文件\基础原子\ 
    xcopy /e /q /y %SrcDir%\base\Run\updatepkg\文件更新 %TarDir%\%PackName%\base\update\
        
    echo 打包升级包后时间:%time% >>%LogDir%\计算时间.log
    
goto :eof


rem ==========================升级环境======================================================
:ExecSqlJc
    echo 升级脚本前时间:%time% >>%LogDir%\计算时间.log 
     
    echo 执行清库脚本(后续不同版本需要创建不同用户)
    call :ExecSQL %SrcDir%\base\Run\buildscript\autopack\清库脚本 dropobj_hsjc.sql %JCDB%


    echo JC升级脚本...
    call :ExecSQL %TarDir%\%PackName%\base\Script\02.安装脚本 hsjc_update.sql %JCDB%
    
    echo 升级脚本后时间:%time% >>%LogDir%\计算时间.log
    
goto :eof




rem 函数功能:执行SQL脚本
rem 函数参数:脚本路径%1, 脚本名称%2, 连接串%3,工作目录%4
:ExecSQL
    set sqlScriptDir=%1
    set sqlScriptFile=%2
    set sqlDBServer=%3
    
    set sqlCurDate=%date:~0,4%%date:~5,2%%date:~8,2%
    set sqlTmp=%sqlScriptFile%_%sqlCurDate%.sql
    set sqlLogFile=%sqlScriptFile%_%sqlCurDate%.log
    
    cd /d %sqlScriptDir%
    
    echo 生成脚本升级的脚本....
    echo set feedback 1 >%sqlTmp%
    echo set define off >>%sqlTmp%
    echo set autoprint on>>%sqlTmp%
    echo WHENEVER sqlERROR continue>>%sqlTmp%
    echo conn %sqlDBServer%>>%sqlTmp%
    echo PROMPT 已连接到本地数据库,开始执行...>>%sqlTmp%
    echo @%sqlScriptFile%>>%sqlTmp%
    echo SHOW ERROR>>%sqlTmp%
    echo disconnect>>%sqlTmp%
    echo exit>>%sqlTmp%


    echo 执行脚本...
    sqlplus /nolog @%sqlTmp%>%sqlScriptDir%\%sqlLogFile%


    copy /y %sqlTmp% %LogDir%\
    copy /y %sqlLogFile% %LogDir%\
    
    del %sqlTmp%
    del %sqlLogFile%


    cd /d %Workspace%
goto :eof




rem ==========================编译基础后台服务======================================================
:Compilesrc
    echo 编译后台前时间:%time% >>%LogDir%\计算时间.log


    rem 上传基础后台
    %puttyDir%\pscp.exe -sftp -l %CompileUser% -pw %CompilePwd% -r %TarDir%\%PackName%\base\Src\* %CompileIp%:/home/%CompileUser%/src <%puttyDir%\a.txt 2>>%LogDir%\ftp_error.log
    %puttyDir%\pscp.exe -sftp -l %CompileUser% -pw %CompilePwd% -r %TarDir%\%PackName%\as2.0_x64\appcom\* %CompileIp%:/home/%CompileUser%/appcom 2>>%LogDir%\ftp_error.log
    rem 编译基础后台
    %puttyDir%\plink.exe -ssh -l %CompileUser% -pw %CompilePwd% -m %SrcDir%\autopack\后台编译命令\srcjc_cmd.txt %CompileIp% >%LogDir%\srcBASE_error.log 2>>&1


   
    echo 编译后台后时间:%time% >>%LogDir%\计算时间.log
goto :eof


    
rem ==========================下载后台服务===========================================


:DownloadSo
    echo 下载后台前时间:%time% >>%LogDir%\计算时间.log


    rem 创建appcom目录
    if exist "%Workspace%\appcom\" (
          rmdir /S /Q "%Workspace%\appcom\"
    )
    mkdir "%Workspace%\appcom\"
    
    rem 下载base的so
    %puttyDir%\pscp.exe -batch -pw %CompilePwd% -r  %CompileUser%@%CompileIp%:/home/%CompileUser%/appcom/* %Workspace%\appcom\ <%puttyDir%\a.txt


    rem 生成base后台
    xcopy /e /q /y %Workspace%\appcom %Workspace%\base\Sources\appcom\
    del /q %%Workspace%\base\Sources\appcom\*_hg_*
    del /q %Workspace%\base\Sources\appcom\*_qs_* 
    del /q %Workspace%\base\Sources\appcom\libo4_mc2_topic_api.so
   
    rem 生成MC后台
    xcopy /e /q /y %Workspace%\appcom\libo4_mc2_topic_api.so %Workspace%\base\Sources\mc\appcom\


    echo 下载后台后时间:%time% >>%LogDir%\计算时间.log
goto :eof


rem ==========================检查错误日志===========================================
:Checklog


  echo 输出本次版本包的信息....
  echo 本次编译的结果如下(明细的日志请参看附件日志文件):>%LogDir%\..\today.txt
  echo =======================================================================================================>>%LogDir%\..\today.txt




  type %LogDir%\hsjc_update.sql_%sqlCurDate%.log|find "ORA-"  
    if "%errorlevel%" equ "0" (
       echo 【基础脚本错误】脚本升级失败,错误信息如下,详细报错请见hsjc_update.sql_%sqlCurDate%.log:>>%LogDir%\..\today.txt
       type %LogDir%\hsjc_update.sql_%sqlCurDate%.log|find "ORA-" >>%LogDir%\..\today.txt
    )


  type %LogDir%\hsjc_update.sql_%sqlCurDate%.log|find "SP2-"  
    if "%errorlevel%" equ "0" (
       echo 【基础脚本错误】脚本升级失败,错误信息如下,详细报错请见hsjc_update.sql_%sqlCurDate%.log:>>%LogDir%\..\today.txt
       type %LogDir%\hsjc_update.sql_%sqlCurDate%.log|find "SP2-" >>%LogDir%\..\today.txt
    )   


  type %LogDir%\hsjc_update.sql_%sqlCurDate%.log|find "警告"  
    if "%errorlevel%" equ "0" (
       echo 【基础脚本错误】脚本升级失败,错误信息如下,详细报错请见hsjc_update.sql_%sqlCurDate%.log:>>%LogDir%\..\today.txt
       type %LogDir%\hsjc_update.sql_%sqlCurDate%.log|find "警告" >>%LogDir%\..\today.txt
    )   
   
  type %LogDir%\srcBASE_error.log|find "Error "  
    if "%errorlevel%" equ "0" (
       echo 【基础后台编译错误】错误信息如下,详细报错请见附件srcBASE_error.log:>>%LogDir%\..\today.txt
       type %LogDir%\srcBASE_error.log|find "Error " >>%LogDir%\..\today.txt
    ) 


  type %LogDir%\srcBASE_error.log|find "/usr/bin/ld: cannot find"  
    if "%errorlevel%" equ "0" (
       echo 【基础后台编译错误】错误信息如下,详细报错请见附件srcBASE_error.log.log:>>%LogDir%\..\today.txt
       type %LogDir%\srcBASE_error.log.log|find "/usr/bin/ld: cannot find" >>%LogDir%\..\today.txt
    ) 
    
  type %LogDir%\ftp_error.log|find "No such file or directory"  
    if "%errorlevel%" equ "0" (
       echo 【FTP错误】错误信息如下,详细报错请见附件No such file or directory:>>%LogDir%\..\today.txt
       type %LogDir%\ftp_error.log|find "No such file or directory" >>%LogDir%\..\today.txt
    ) 


  type %LogDir%\ftp_error.log|find "not a directory"  
    if "%errorlevel%" equ "0" (
       echo 【FTP错误】错误信息如下,详细报错请见附件No such file or directory:>>%LogDir%\..\today.txt
       type %LogDir%\ftp_error.log|find "not a directory" >>%LogDir%\..\today.txt
    )     
    
    echo 日志检查完成


goto :eof


rem ==========================打包压缩文件===========================================


:PackPkg
    echo 压缩前时间:%time% >>%LogDir%\计算时间.log
 
    if not defined WinRar goto :eof
    
    echo 开始压缩日志...
    cd /d %LogDir%\..
    if exist today_Base.rar del /Q today_Base.rar
    %WinRar% a -r today_Base.rar %PackName:~0,13%\*
    echo 压缩日志完成
    cd /d %Workspace%
    
    rem 检查到有报错,无论前台、脚本、后台,即还原上次集成SVN版本,退出。 
 type %Logdir%\..\today.txt|find "错误】"
 if "%errorlevel%" equ "0" (
   rem 还原上次集成SVN版本,待编译报错修复后从此版本开始编译
   copy /y %Logdir%\上次集成SVN版本.txt %Logdir%\..\上次集成SVN版本.txt   
     exit 1
 ) 
    
    echo 压缩后时间:%time% >>%LogDir%\计算时间.log
    
goto :eof


rem ==========================提交SVN===========================================
:SVNcommit


  rem 检查错误信息,如果有错误,不上传FTP
  type %LogDir%\..\today.txt|find "Error 1"  
    if "%errorlevel%" equ "0" (
       exit 1
    )    


  type %LogDir%\..\today.txt|find "ORA-"  
    if "%errorlevel%" equ "0" (
       exit 1
    )


  type %LogDir%\..\today.txt|find "SP2-"  
    if "%errorlevel%" equ "0" (
       exit 1
    )


  type %LogDir%\..\today.txt|find "警告"  
    if "%errorlevel%" equ "0" (
       exit 1
    )


  type %LogDir%\..\today.txt|find "========== 全部重新生成"  
    if "%errorlevel%" equ "0" (
       exit 1
    )


  type %LogDir%\..\today.txt|find "Error "  
    if "%errorlevel%" equ "0" (
       exit 1
    )


  type %LogDir%\..\today.txt|find "/usr/bin/ld: cannot find"  
    if "%errorlevel%" equ "0" (
       exit 1
    )


  type %LogDir%\..\today.txt|find "error:"  
    if "%errorlevel%" equ "0" (
       exit 1
    )


  type %LogDir%\..\today.txt|find "error"  
    if "%errorlevel%" equ "0" (
       exit 1
    )


  type %LogDir%\..\today.txt|find "Error: "  
    if "%errorlevel%" equ "0" (
       exit 1
    )
    
  type %LogDir%\..\today.txt|find "【错误】"  
    if "%errorlevel%" equ "0" (
       exit 1
    )


  type %LogDir%\..\today.txt|find "not a directory"  
    if "%errorlevel%" equ "0" (
       exit 1
    )


  type %LogDir%\..\today.txt|find "No such file or directory"  
    if "%errorlevel%" equ "0" (
       exit 1
    )
  
  rem 记录版本信息
  if exist %Workspace%\base\Run\updatepkg\版本信息\version.ini (
  for /f %%i in (%Workspace%\base\Run\updatepkg\版本信息\version.ini) do ( 
    set aa=%%i
    set aa=!aa:subversion=!
    if "!aa!" EQU "%%i" (
    echo !aa!>>%LogDir%\version1.ini     
  ) else (
    call set subversion=%%aa:~1%%
      set /a subversion=!subversion!+1
      echo subversion=!subversion!>>%LogDir%\version1.ini 
    )
    )
    move /y %LogDir%\version1.ini %Workspace%\base\Run\updatepkg\版本信息\version.ini
  )
  
  rem 递交记录版本信息
  svn commit -m "提交修改单号:M200000000000 修改说明:递交记录版本信息" %Workspace%\base\Run\updatepkg\版本信息\version.ini>>%Logdir%\svnlog_commit.log 2>&1
  
  rem 递交base后台
cd /d %Workspace%\base\Sources\appcom
svn add * --force
  svn commit -m "提交修改单号:M200000000000 修改说明:编译生成SO文件提交" %Workspace%\base\Sources\appcom>>%Logdir%\svnlog_commit.log 2>&1 
  
  rem 递交mc
  cd /d %Workspace%\base\Sources\mc\appcom
svn add * --force
  svn commit -m "提交修改单号:M200000000000 修改说明:编译生成MC文件提交" %Workspace%\base\Sources\mc\appcom>>%Logdir%\svnlog_commit.log 2>&1 
  
  rem 生成base后台
  cd /d %Workspace%\base\Sources\Script
  svn add * --force
  svn commit -m "提交修改单号:M200000000000 修改说明:编译生成脚本文件提交" %Workspace%\base\Sources\Script>>%Logdir%\svnlog_commit.log 2>&1 
  for /f "tokens=* delims=" %%i in (%Logdir%\svnlog_commit.log) do (
      set tt=%%i
      set tt=!tt:Commit failed=!
      set tt=!tt:svn: E=!
      if "!tt!" NEQ "%%i" (
        echo 提交SVN时报错,请配管检查!!!>>%Logdir%\..\today.txt
        exit 1
      )
   )
   
  echo 提交SVN成功


goto :eof
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值