標籤:blog else taskkill 環境 style pat gpo 思路 任務
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/windowsset ResourcePath=D:\yb\QHLDAP\6.0\src\Windowsset _winrar=C:\Progra~1\WinRAR\WinRAR.exeset svnUrl=https://192.168.0.234/QHLDAP/發貨檔案/6.0/trunkset _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.batif 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/11set package=D:\目錄服務管理系統\V6.0\QH-LDAP_6.01.001\安裝包\Windows::刪除上次的壓縮檔del /q /s D:\yb\QHLDAP\6.0\src\trunk_win.rarrd /q /s %package%\apird /q /s %package%\docrd /q /s %package%\licenserd /q /s %package%\setupdel /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 dqrem Create date 2018/01/09set _work=D:\yb\6.0\workspaceset _setuppath=D:\yb\6.0\workspace\package\QH-Ldap\Media\SINGLE_EXE_IMAGE\Package\Setup.exeset _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%\.svnrem run compilers.batcd /d "%_work%\package(winxldap)\script"call alone_windows.batcd /d "D:\yb\6.0\script"call D:\yb\6.0\scripts\copyCInstall.batdel /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.ismrem run ‘runmstsc‘ scheduled taskrem schtasks /run /s 192.168.0.234 /u administrator /p [email protected] /i /tn QHLDAP_6.0_234rem dynamic condition monitor :loopping localhost -n 3 > nulif not exist %_setuppath% goto loopping localhost -n 4 > nulcall D:\yb\6.0\scripts\copysetup.batrem close InstallShield servicetaskkill /f /im isdev.exe
alone_windows.bat
rem compiler ‘initLdap‘ and ‘LDAPProject‘rem Create by dqrem Create date 2017/5/10@echo offset _filelog=debug.txtset _init=ant -f init.xmlset _Ldap=ant -f Ldap.xmlset _crt="D:\tools\SecureCRT "set _ant="D:\yb\6.0"set _tar=D:\yb\workspace\consoleset _currpath="D:\yb\6.0\workspace\package(winxldap)\script"set _compile_log=debug.txtset _upload_log="/../../../yb/workspace/package(winxldap)/script/%_filelog%"cd /d %_currpath%rem delete logif 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 dqrem Create date 2017/5/10@echo offset _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\binset _setupWork=D:\yb\6.0\workspace\package(winxldap)\winldap\GFALdap-Web\SERVER\workcopy %_bin% %_setupBin%copy %_work% %_setupWork%
copysetup.bat
rem setup operationrem Create by dqrem Create date 2018/01/10rem copy to 192.168.0.234net use * /del /ynet use \\192.168.0.234 [email protected] /user:administratorcopy 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\setuprem delete setup.exedel D:\yb\6.0\workspace\package\QH-Ldap\Media\SINGLE_EXE_IMAGE\Package\Setup.exerem run ‘opensetup‘ scheduled taskschtasks /run /s 192.168.0.234 /u administrator /p [email protected] /i /tn opensetup6.0
clean.bat
rem clean D:\yb\workspace\*rem Create by dqrem Create date 2017/5/10@echo offset _work=D:\yb\6.0\workspaceset _log=D:\tools\compilerproject\alone\cleanlog.txtset _console=%_work%\consoleset _ldapserver=%_work%\ldapserverset _package=%_work%\packageset _package(windxldap)=%_work%\package(winxldap)set _trunk_win=%_work%\trunk_win.rarcd /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