1.背景
SVN版本控制下多人协调编写代码,会经常性的提交新功能,修改完善已有功能。产品经理、测试人员需定期回归测试,确保禅道Bug已经修复,这就需要经常性地打包软件。为了节省编译时间,也方便产品经理可随时去取最新的版本,参考网上的材料,总结自动化编译的流程。
2.目标
无需人工参与,定期自动编译工程,翻译文件,并将生成的库,配置文件复制到指定共享存储目录。
3.自动化脚本
3.1自动化编译脚本
AutomaticCompile_v73.bat
REM ************************************************************************************************
REM * Script to compile the solutions of Viusal Studio 2015 *
REM * Created by: IvanLJF *
REM * Created 2023.04.16 *
REM ************************************************************************************************
REM STEP 1: set environment variables:
REM ************************************************************************************************
SET VS2015Compiler="%VS140COMNTOOLS%..\..\Common7\IDE\devenv.com"
REM ************************************************************************************************
REM STEP 2: set compile log
REM ************************************************************************************************
SET CompileLogName="%~dp0PIE-SAR_v73_CompileResults.log"
ECHO [%DATE% %Time%] Start compile sequence >%CompileLogName%
ECHO Used compile configuration is %buildAnyCPU% >>%CompileLogName%
REM ************************************************************************************************
REM STEP 3: Start compile
REM ************************************************************************************************
SET SolutionFileName="%~dp0PIE-SAR_v7.x_All.sln"
%VS2015Compiler% %SolutionFileName% /build "Release|x64" /Out %CompileLogName%
IF NOT %errorlevel% == 0 ECHO %SolutionFileName% failed! Error: %errorlevel% >>%CompileLogName%
IF %errorlevel% == 0 ECHO %SolutionFileName% compiled successful >>%CompileLogName%
REM ************************************************************************************************
REM STEP 4: If compile failed stop processing:
REM ************************************************************************************************
IF NOT %errorlevel% == 0 PAUSE
ECHO [%DATE% %Time%] Finished compile sequence >>%CompileLogName%
REM ************************************************************************************************
REM STEP 5: language files
call language.bat
REM ************************************************************************************************
REM STEP 6: Release Daily Version Management
call DailyVersionManagement_v73.bat
REM ************************************************************************************************
3.2 自动中文翻译(ts–>qm)
Language.bat
REM ************************************************************************************************
REM * Script to translate ts to qm *
REM * Created by: IvanLJF *
REM * Created 2023.04.16 *
REM ************************************************************************************************
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set srcdir=%PIEV4_SRC%Language
set dstdir=%PIEV4_OUT_DIR%\Language
if not exist %dstdir% ( md %dstdir% )
for /f "delims=" %%i in ( 'dir /ad/b/s %srcdir%' ) do (
md %dstdir%\%%~ni
)
cd /d %srcdir%
echo srcdir:%srcdir%
echo dstdir:%dstdir%
echo current path:%cd%
for /r %%i in (*.ts) do if exist %%i (
set srcfile=%%i
echo src file is: !srcfile!
set dstfile=!srcfile:%srcdir%=%dstdir%!
set dstfile=!dstfile:.ts=.qm!
echo dst file is: !dstfile!
lrelease !srcfile! -qm !dstfile!
)
REM: pause
3.3 每日版本发布
DailyVersionManagement_v73.bat
REM ************************************************************************************************
REM * Script to release pie-sar 7.3 software to 193 *
REM * Created by: IvanLJF *
REM * Created 2023.04.16 *
REM ************************************************************************************************
:: /xf 指定不执行复制操作的文件类型
:: /xd 表示排除指定的文件夹
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set srcdir="D:\Code\PIE6.0_vs2015\PIE_CPLUS\src\OutDir"
set dstdir="\\172.16.20.193\xjsf\PIE-SAR7.3_DailyVersion"
::使用共享文件夹
net use \\172.16.20.193\xjsf xjsf /user:xjsf
::创建每日文件夹
set ymd=%date:~,4%%date:~5,2%%date:~8,2%
set dstdir=%dstdir%\%ymd%
MD %dstdir%
::拷贝
robocopy %srcdir%\config %dstdir%\config *.* /e /s /xo
robocopy %srcdir%\data %dstdir%\data *.* /e /s /xo /xd AtmCor_LUT Cali definitions
robocopy %srcdir%\Fonts %dstdir%\Fonts *.* /e /s /xo
robocopy %srcdir%\Language %dstdir%\Language *.* /e /s /xo
robocopy %srcdir%\Release_x64 %dstdir%\Release_x64 *.* /e /s /xo /xf *.lib *.exp *.ilk *.iobj *.ipdb *.pdb
robocopy %srcdir%\Release_x64_MTInSAR %dstdir%\Release_x64_MTInSAR *.* /e /s /xo /xf *.lib *.exp *.ilk *.iobj *.ipdb *.pdb
robocopy %srcdir%\res %dstdir%\res *.* /e /s /xo
4 devenv.com用法
可用的命令行开关:
【/Build 】使用指定的解决方案配置生成解决方案或项目。例如“Debug”。如果可能存在多个平台,则配置名称必须用引号括起来并且包含平台名称。例如“Debug|Win32”。
【/Clean】删除生成结果。
【/Command 】启动 IDE 并执行该命令。
【/Deploy 】生成并部署指定的生成配置。
【/Edit 】在此应用程序的运行实例中打开指定文件。如果没有正在运行的实例,则启动一个具有简化窗口布局的新实例。
【/LCID】设置 IDE 中用于用户界面的默认语言。
【/Log】将 IDE 活动记录到指定的文件以用于故障排除。
【/NoVSIP】禁用用于 VSIP 测试的 VSIP 开发人员许可证密钥。
【/Out】将生成日志追加到指定的文件中。
【/Project 】指定生成、清理或部署的项目。必须和 /Build、/Rebuild、/Clean 或 /Deploy 一起使用。
【/ProjectConfig】重写解决方案配置中指定的项目配置。例如“Debug”。如果可能存在多个平台,则配置名称必须用引号括起来 ,并包含平台名称。例如“Debug|Win32”。 必须和 /Project 一起使用。
【/Rebuild 】先清理,然后使用指定配置生成解决方案或项目。
【/ResetAddin】移除与特定外接程序关联的命令和命令用户界面。
【/ResetSettings】恢复 IDE 的默认设置,还可以重置为指定的 VSSettings 文件。
【/ResetSkipPkgs】清除所有添加到 VSPackages 的 SkipLoading 标记。
【/Run】编译并运行指定的解决方案。
【/RunExit】编译并运行指定的解决方案然后关闭 IDE。
【/SafeMode】以安全模式启动 IDE,加载最少数量的窗口。
【/Upgrade 】升级项目或解决方案以及其中的所有项目。并相应地创建这些文件的备份。有关备份过程的更多信息,请参见“Visual Studio 转换向导”上的帮助。
5.定期执行
使用windows的任务计划程序。定期执行bat脚本。【开始】–【任务计划程序】