版本基线自动化之windows
Posted dqcer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了版本基线自动化之windows相关的知识,希望对你有一定的参考价值。
1、背景:
目前项目维护周期过程中,制作调试版本和对外发布版本次数比较频繁,流程过于繁琐和随意,且打包制作人成为瓶颈,为了规范版本基线流程和实现全员自动化参与,拟定版本基线自动化方案。
2、目标:
版本基线自动化方案的实施,主要任务分为配置管理自动化,编译做包自动化,版本发布自动化。主要目标是实现一键式做包和发布,减少人为误操作、释放人力资源、提高开发效率。
3、环境:
软件环境:Windows Server 2012 R2
硬件环境:内存:8G 硬盘:100G
配置工具:服务端:VisualSVN-Server-3.5.3-x64 客户端:TortoiseSVN_x64_1.8.8.25755
做包工具:InstallShield 2010 / tar
传输工具:Xmanager4(Telent、SSH)
编译环境:两台虚拟机:Windows Server 2012 R2 / 普华3.0
编译工具:VS2008 / gcc
4、详细说明:
1)确定版本封版时间
迭代任务划分确定版本封版时间。
2)提交代码
上传代码前,首先完成模块自验,输出单元测试报告,代码需要进行检视,由检视人完代码检视报告,上传SVN时按指定格式填写信息(上传人,检视人,修改说明,修改日期),格式不正确,无法提交。尽量做到一个功能点只上传一次,强调一次性把事情做对。资料修改同样需要经过检视才能上传。
3)锁定配置库
版本封版后,配置管理员关闭所有开发人员对配置库的写权限,锁定代码,同时在基线服务器上创建版本基线目录。
4)环境清理
基线服务器删除上一次检出的代码,编译服务器删除来自基线服务器上传的代码、本地编译生成的二进制文件和安装包。
5)代码检出
基线服务器通过SVN工具检出最新代码。
6)压缩上传
将代码压缩打包,上传至编译服务器制定目录下。
7)解压
将代码压缩打包解压至当前目录下。
8)代码编译
执行编译脚本,完成代码编译。
9)软件打包
Windows平台通过InstallShield工程实现软件打包,Linux平台通过tar工具实现软件打包。
10)上传版本基线库
安装包上传至基线版本库指定目录下。
11)取包自验
开发人员从基线库中取包自验,若无功能性问题,可通知配置管理员完成基线,若出现问题,经讨论合议修改方案后,实施代码修改,完成自验后通知配置管理员单独开放代码提交权限,完成代码上传,基线流程返回锁定配置库流程。
12)版本基线
配置管理员将所有对外发布内容进行打包,完成MD5校验,并将对应代码保存至SVN的tag目录下
5、流程图:
好了说了这么多开工吧,大致思路:
1、cleanwork.bat: 环境的清理,清除上次自动化打包生成的临时文件,并远程执行93服务器的计划任务>clean.bat;
2、build.bat: 调用cleanwork.bat脚本,并将svn服务器ip为234中检出代码,利用WinRAR工具压缩;
3、copyrar.bat: 将压缩的文件利用共享的方式发送到编译服务器中ip为93,并远程执行93服务器的计划任务>main.bat;
4、main.bat: 执行93服务器的控制脚本,将将文件解压,
4.1、alone_windows.bat: 执行编译脚本,这里我java采用的是ant工具编译,
4.2、copyCinstall.bat: c采用的是vs,因为c这边的最近没怎么开发,所以我就直接将以前编译好的直接复制,
4.3、启动installShield打包工具,进行打包,copysetup.bat: 将打包文件利用文件共享的方式发送到svn服务器中,并远程执行234服务器的计划任务>opensetup.bat,
5、opensetup.bat: 最后打开打包文件所在的位置;
build.bat
rem 检出代码,并压缩 rem dq rem 2018/02/11 @echo off set ResourceUrl=https://192.168.0.234/QHLDAP/src/6.0/trunk/windows set ResourcePath=D:\\yb\\QHLDAP\\6.0\\src\\Windows set _winrar=C:\\Progra~1\\WinRAR\\WinRAR.exe set svnUrl=https://192.168.0.234/QHLDAP/发货文件/6.0/trunk set _silent="D:\\目录服务管理系统\\V6.0\\QH-LDAP_6.01.001\\安装包\\Windows" ::远程执行编译服务器中名为“cleanwindows_6.0”的计划任务,删除上次的文件 schtasks /run /s 192.168.0.93 /u administrator /p 123456 /tn cleanwindows_6.0 ::清除上次产生的文件 call D:\\yb\\QHLDAP\\6.0\\windows\\cleanwork.bat ::远程编译服务器 call D:\\yb\\QHLDAP\\6.0\\windows\\runmstsc.bat if not exist "%ResourcePath%" ( ::正在检出代码... svn checkout --username "autoscript" --password "123456" -q %ResourceUrl% "%ResourcePath%" ) else ( :: 正在更新代码... TortoiseProc.exe /command:update /path:"%ResourcePath%" /closeonend:1 ) svn checkout --username "autoscript" --password "123456" -q %svnUrl% "%_silent%" rd /s /q %_silent%\\.svn ::压缩文件,不压缩.svn文件 -a备份所有文件 -ep1 保存压缩文件的结构 -ibck为后台压缩 -R遍历 %_winrar% a -ep1 -R D:\\yb\\QHLDAP\\6.0\\src\\trunk_win.rar D:\\yb\\QHLDAP\\6.0\\src\\Windows\\* ::复制文件 call D:\\yb\\QHLDAP\\6.0\\windows\\copyrar.bat @echo on
cleanwork.bat
rem 清理文件 rem dq rem 2018/02/11 set package=D:\\目录服务管理系统\\V6.0\\QH-LDAP_6.01.001\\安装包\\Windows ::删除上次的压缩文件 del /q /s D:\\yb\\QHLDAP\\6.0\\src\\trunk_win.rar rd /q /s %package%\\api rd /q /s %package%\\doc rd /q /s %package%\\license rd /q /s %package%\\setup del /q /s %package%\\readme.txt
copyrar.bat
rem 复制压缩文件到编译服务器中,并执行计划任务 rem dq rem 2018/02/11 ::建立共享 net use \\\\192.168.0.93\\yb\\6.0\\workspace 123456 /user:administrator ::通过文件共享的方式,复制压缩文件到编译服务器中 copy D:\\yb\\QHLDAP\\6.0\\src\\trunk_win.rar \\\\192.168.0.93\\yb\\6.0\\workspace\\ ::远程执行编译服务器中名为“QHLDAP_6.0_93”的计划任务 schtasks /run /s 192.168.0.93 /u administrator /p 123456 /tn QHLDAP_6.0_93
编译服务器93
main.bat
rem main control rem Create by dq rem Create date 2018/01/09 set _work=D:\\yb\\6.0\\workspace set _setuppath=D:\\yb\\6.0\\workspace\\package\\QH-Ldap\\Media\\SINGLE_EXE_IMAGE\\Package\\Setup.exe set _classJar=D:\\yb\\6.0\\workspace\\package(winxldap)\\winldap\\GFALdap-Web\\WEB\\web\\webapp\\LDAPProject\\WEB-INF\\classes rem decompression trunk_win.rar C:\\Progra~1\\WinRAR\\WinRAR x -ep1 -y %_work%\\trunk_win.rar %_work% ::rd /s /q %_work%\\.svn rem run compilers.bat cd /d "%_work%\\package(winxldap)\\script" call alone_windows.bat cd /d "D:\\yb\\6.0\\script" call D:\\yb\\6.0\\scripts\\copyCInstall.bat del /a /f /q "D:\\yb\\6.0\\workspace\\package(winxldap)\\winldap\\GFALdap-Web\\WEB\\web\\webapp\\LDAPProject\\WEB-INF\\classes\\*.jar" rem run InstallShield start D:\\yb\\6.0\\workspace\\package\\QH-LDAP.ism rem run \'runmstsc\' scheduled task rem schtasks /run /s 192.168.0.234 /u administrator /p P@ssw0rd /i /tn QHLDAP_6.0_234 rem dynamic condition monitor :loop ping localhost -n 3 > nul if not exist %_setuppath% goto loop ping localhost -n 4 > nul call D:\\yb\\6.0\\scripts\\copysetup.bat rem close InstallShield service taskkill /f /im isdev.exe
alone_windows.bat
rem compiler \'initLdap\' and \'LDAPProject\' rem Create by dq rem Create date 2017/5/10 @echo off set _filelog=debug.txt set _init=ant -f init.xml set _Ldap=ant -f Ldap.xml set _crt="D:\\tools\\SecureCRT " set _ant="D:\\yb\\6.0" set _tar=D:\\yb\\workspace\\console set _currpath="D:\\yb\\6.0\\workspace\\package(winxldap)\\script" set _compile_log=debug.txt set _upload_log="/../../../yb/workspace/package(winxldap)/script/%_filelog%" cd /d %_currpath% rem delete log if exist debug.txt ( del /q /f /a %_filelog% ) cd %_ant% rem compiler rem call %_init% call %_Ldap% rem start compiler c cd /d %_currpath% rem call prepare_windows.bat
copyCinstall.bat
rem clean D:\\yb\\workspace\\* rem Create by dq rem Create date 2017/5/10 @echo off set _bin=D:\\yb\\6.0\\c\\bin\\* set _work=D:\\yb\\6.0\\c\\work\\* set _setupBin=D:\\yb\\6.0\\workspace\\package(winxldap)\\winldap\\GFALdap-Web\\SERVER\\bin set _setupWork=D:\\yb\\6.0\\workspace\\package(winxldap)\\winldap\\GFALdap-Web\\SERVER\\work copy %_bin% %_setupBin% copy %_work% %_setupWork%
copysetup.bat
rem setup operation rem Create by dq rem Create date 2018/01/10 rem copy to 192.168.0.234 net use * /del /y net use \\\\192.168.0.234 P@ssw0rd /user:administrator copy D:\\yb\\6.0\\workspace\\package\\QH-Ldap\\Media\\SINGLE_EXE_IMAGE\\Package\\Setup.exe \\\\192.168.0.234\\目录服务管理系统\\V6.0\\QH-LDAP_6.01.001\\安装包\\Windows\\setup rem delete setup.exe del D:\\yb\\6.0\\workspace\\package\\QH-Ldap\\Media\\SINGLE_EXE_IMAGE\\Package\\Setup.exe rem run \'opensetup\' scheduled task schtasks /run /s 192.168.0.234 /u administrator /p P@ssw0rd /i /tn opensetup6.0
clean.bat
rem clean D:\\yb\\workspace\\* rem Create by dq rem Create date 2017/5/10 @echo off set _work=D:\\yb\\6.0\\workspace set _log=D:\\tools\\compilerproject\\alone\\cleanlog.txt set _console=%_work%\\console set _ldapserver=%_work%\\ldapserver set _package=%_work%\\package set _package(windxldap)=%_work%\\package(winxldap) set _trunk_win=%_work%\\trunk_win.rar cd /d %_work% del /s /q %_trunk_win% rd /s /q %_work%\\.svn rd /s /q %_console% rd /s /q %_ldapserver% rd /s /q %_package% rd /s /q %_package(windxldap)%
一切弄好之后双击build.bat脚本就好了,这里笔者就不再介绍如何添加计划任务、文件共享、svn命令和WinRAR命令了,网上有很多相关的资料。
以上是关于版本基线自动化之windows的主要内容,如果未能解决你的问题,请参考以下文章