??最近開始負(fù)責(zé)團(tuán)隊(duì)最后的打包任務(wù)姻灶,每次都要更新代碼->打開VS(編譯編輯器)->打開編輯器(打包)->發(fā)布至服務(wù)器->群里通知大家下載鏈接软能,流程繁瑣而耗時(shí)样勃,逼得我不得不想法解放自己O(∩_∩)O
流程
最終腳本實(shí)現(xiàn)的流程包括:
- 更新代碼
- 改配置文件
- 釘釘通知開始打包
- VS編譯
- UE4打包
- 安裝包發(fā)布
- 釘釘通知完成&下載鏈接
Q&A
Perforce操作
參:[Perforce系列—] 1. 使用Perforce命令與常用命令
通過(guò)P4工具實(shí)現(xiàn)流酬,采用了命令中包含服務(wù)端回官、用戶信息的方式蓉驹,不用設(shè)置環(huán)境變量城榛。
更新源代碼
p4 -C utf8 -p 192.168.1.100:1666 -u packer -p packer -c UnrealEngine sync D:\Jenkins\workspace\UnrealEngine\...#head
獲取當(dāng)前版本信息
參:[p4] Can you find out which changelist your workspace has been synced to?
p4 -C utf8 -p 192.168.1.100:1666 -u packer -p packer -c UnrealEngine changes -m1 //...#have
字符串操作
參:批處理中把命令的結(jié)果賦值給變量
參:DOS批處理命令-字符串操作
參:DOS批處理之DATE命令的使用方法詳解
獲取當(dāng)前版本號(hào)并利用時(shí)間組成文件名
::命令結(jié)果形如:Change 1059 on 2017/07/21 by peony@peony '修改貼圖'
set cmdStr="p4 -C utf8 -p 192.168.1.100:1666 -u packer -p packer -c CodeSource changes -m1 //...#have"
for /f "delims=" %%t in ('%cmdStr%') do set result=%%t
set revision=%result:~7,4%
for /f %%t in ('date /t') do set currentDate=%%t
set current=%currentDate:~3,1%%currentDate:~5,2%%currentDate:~8,2%
set filename=Shooter_%current%_%revision%
echo %filename%
編譯打包
VS生成工程
參:Devenv 命令行開關(guān)
set SELF_PROJ_PATH=D:\Jenkins\workspace\CodeSource\Client\Intermediate\ProjectFiles\Shooter.vcxproj
devenv "%SELF_PROJ_PATH%" /build "Development Editor|Win64"
UE打包項(xiàng)目
參:【虛幻引擎】編寫腳本執(zhí)行打包
set SELF_RUNUAT_PATH=D:\Jenkins\workspace\UnrealEngine\Engine\Build\BatchFiles\RunUAT.bat
%SELF_RUNUAT_PATH% BuildCookRun -project=%GAME_DIR%\Client\Shooter.uproject -noP4 -clientconfig=Shipping -serverconfig=Shipping -nocompileeditor -ue4exe=UE4Editor-Cmd.exe -utf8output -platform=Android_ETC2 -targetplatform=Android -cookflavor=ETC2 -build -cook -map=map1+map2 -unversionedcookedcontent -pak -createreleaseversion=0.2 -manifests -compressed -stage -package -cmdline=" -Messaging" -archive -archivedirectory=%PACK_DIR%
釘釘群消息
參:自定義機(jī)器人
參:Json is undefined in cURL
利用釘釘群內(nèi)的自定義機(jī)器人來(lái)實(shí)現(xiàn),其中在腳本里發(fā)消息用到了Curl(我是自己去下載了一個(gè)適用的版本)态兴。
發(fā)送最簡(jiǎn)單的文本消息
set SELF_DING_SEND_MANAGER=https://oapi.dingtalk.com/robot/send?access_token=73014c410d06411ea0fd95804f2f5e73a66f106dfadf723f4dc1111111111111
set link=http://192.168.1.125/publish/V0.2/Shooter_70724_1291.apk
curl -d "{\"msgtype\":\"text\",\"text\":{\"content\":\"Download:%link%\"}}" -H "Accept: application/json" -H "Content-Type: application/json; charset=UTF-8; Accept: text/plain" -X POST %SELF_DING_SEND_MANAGER%
內(nèi)容有點(diǎn)瑣碎狠持,也是需要一個(gè)功能就去查資料實(shí)現(xiàn)一個(gè),借此備忘瞻润!_