cocos 版本2.4.11
在windows上jenkins的具體配置和部署,可參考上一篇文章cocos creator使用jenkins打包流程,打包webmobile_jenkins打包,發布,部署cocoscreator-CSDN博客
特別注意,windows上運行jenkins需要關閉windows自己的jenkins服務,需要手動使用命令行啟動jenkins服務,否則打包的時候會有cocos報錯,上面的文章中有提到
這里直接從新建jenkins構建任務開始
1.新建item,選擇自由風格,起個名字,這里是build Wechat
2.配置參數,分別配置
cdn的桶中的文件夾路徑:
下面是我的cdn地址,前面是桶,后面是具體路徑,這里只配置在桶中的路徑,不包含桶
還有是否上傳cdn:不上傳就是完整的包,選擇上傳就會自動上傳remote文件夾到cdn,讓然后刪除包中的remote文件夾,
還有是否清理緩存:一般可以不清理工程的temp和libaray,這里清理是為了防止緩存的資源和實際的不一致,清理后可重新生成
3.配置代碼的svn路徑和用戶名校驗,我這里工程師svn,也可以選擇git,需要在jenkins插件中安裝svn這里才能配置
4.具體的打包流程批處理命令
(1)需要在電腦上先安裝coscli,用于上傳到cdn的工具,具體安裝和配置可看官網對象存儲 下載與安裝配置_騰訊云
(2)要下載壓縮工具,我這里是7Z,用于壓縮最終包,供下載
重點解釋
1.需要修成自己對應的路徑(cocos安裝路徑,cocos項目具體路徑,打包類型,打包后保存路徑,訪問打包結果的服務端口,cdn的桶,資源服務器地址)
set COCOS_PATH="C:\ProgramData\cocos\editors\Creator\2.4.11\CocosCreator.exe"
set PROJECT_PATH=%WORKSPACE%\client\proj
set BUILD_PLATFORM=wechatgame
set DEPLOY_ROOT="D:\buildPackage\wechatgame"
set WEB_PORT=8090
set COS_BUCKET="cos://gsr-cdn-125......."
set "REMOTE_SERVER=https://gsr-cdn.xxxxxx.com%ResServerPath%"
ResServerPath:是上面jenkins中配置的路徑變量
2.這里的大致就是,把項目配置中的settings/wechatgame.json中的資源服務器地址,替換成我們配置的,等打完包后,再重置回來,防止下次更新產生沖突
3.因為coscli放在C:\Users\Admin下,這里如果要上傳cdn,需要進入admin目錄下,如果配置的cnd上的資源版本路徑 例如 A/B,則會自動創建B文件夾,并在B文件夾下創建remote文件夾,然后把打包后的remote中的文件,傳上來,B文件夾前面的路徑需要自己提前創建好,上傳后移除項目包體中的remote文件夾,自己也可以選擇備份
4.這里就是壓縮構建好的包體,生成下載鏈接和版本信息,保存打包記錄中的最新的20個包,具體可自己修改要保存多少個歷史包體,我是用http-server啟動的包體訪問服務
5.我是windows任務,每次開機的時候啟動訪問服務,啟動jenkins,在上一個文章打包webmobile中提到過,有具體代碼,
下面是具體的批處理打包代碼
@echo off
chcp 65001 >nul
:: 設置命令行字體(需要支持 Unicode 的字體如 Consolas)
reg add "HKCU\Console" /v "FaceName" /t REG_SZ /d "Consolas" /f
reg add "HKCU\Console" /v "CodePage" /t REG_DWORD /d 65001 /f:: 設置本地環境支持 Unicode
setlocal enableextensions enabledelayedexpansion
set PYTHONIOENCODING=utf-8
set LANG=zh_CN.UTF-8:: ========== 配置區 ==========
set COCOS_PATH="C:\ProgramData\cocos\editors\Creator\2.4.11\CocosCreator.exe"
set PROJECT_PATH=%WORKSPACE%\client\proj\gamexiuxianv7
set BUILD_PLATFORM=wechatgame
set DEPLOY_ROOT="D:\buildPackage\wechatgame"
set WEB_PORT=8090
set COS_BUCKET="cos://gsr-cdn-125.......":: ========== 1. 清理環境 ==========
if "%CleanUpCache%"=="true" (echo [STEP 1] 清理緩存...rmdir /s /q "%PROJECT_PATH%\library"rmdir /s /q "%PROJECT_PATH%\temp"
):: ========== 2. 微信小游戲構建 ==========
echo [STEP 3] 構建微信小游戲(啟用分包)...
:: 構建修改 wechatgame.json 把cdn地址替換成配置的最新地址
set "SETTINGS_FILE=%PROJECT_PATH%\settings\wechatgame.json"
set "REMOTE_SERVER=https://gsr-cdn.xxxxxx.com%ResServerPath%"
set "BACKUP_FILE=%SETTINGS_FILE%.bak":: 步驟1:備份原始文件 wechatgame.json
copy "%SETTINGS_FILE%" "%BACKUP_FILE%""
powershell -Command "$json = Get-Content '%SETTINGS_FILE%' | ConvertFrom-Json; $json.REMOTE_SERVER_ROOT = '%REMOTE_SERVER%'; $json | ConvertTo-Json -Depth 100 | Set-Content '%SETTINGS_FILE%'"echo 已更新 REMOTE_SERVER_ROOT 為: %REMOTE_SERVER%
%COCOS_PATH% --path "%PROJECT_PATH%" --build "platform=%BUILD_PLATFORM%;"if %errorlevel% neq 0 (echo 錯誤:Cocos構建失敗exit /b 1
)
echo 正在恢復原始配置文件...wechatgame.json
move /y "%BACKUP_FILE%" "%SETTINGS_FILE%":: ========== 3. 上傳到COS ==========
echo [STEP 5] 上傳到騰訊云COS...
:: 檢查是否上傳CDN
if "%isUploadCDN%"=="true" (cd /d "C:\Users\Admin":: 創建文件夾標記echo Creating folder markers...coscli cp NUL "%COS_BUCKET%%ResServerPath%/.keep"if %ERRORLEVEL% neq 0 (echo [ERROR] Failed to create folder marker!exit /b 1)echo [SUCCESS] Folder marker created successfully!:: 創建remote文件夾標記coscli cp NUL "%COS_BUCKET%%ResServerPath%/remote/.keep"if %ERRORLEVEL% neq 0 (echo [ERROR] Failed to create remote folder marker!exit /b 1)echo [SUCCESS] Remote folder marker created successfully!:: 上傳remote文件夾內容echo Uploading remote folder...coscli cp "%PROJECT_PATH%\build\%BUILD_PLATFORM%\remote" "%COS_BUCKET%%ResServerPath%/remote" -rif %ERRORLEVEL% neq 0 (echo [ERROR] Upload failed!exit /b %ERRORLEVEL%)echo [SUCCESS] Upload completed!:: 執行后續操作移除remote文件夾rmdir /s /q "%PROJECT_PATH%\build\%BUILD_PLATFORM%\remote"
)set VERSION=build-%BUILD_NUMBER%
set BUILD_DIR=%PROJECT_PATH%\build\%BUILD_PLATFORM%
set ZIP_FILE=%DEPLOY_ROOT%\builds\%VERSION%.zipecho [STEP 6] 壓縮構建產物...
"D:\Program Files\7-Zip\7z.exe" a -tzip "%ZIP_FILE%" "%BUILD_DIR%\*" -mx9:: ========== 6. 生成下載鏈接 ==========
for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr "IPv4"') do (for /f "tokens=*" %%j in ("%%i") do set IP=%%j
)
set IP=%IP: =%
set ACCESS_URL=http://!IP!:%WEB_PORT%/wechatgame/builds/%VERSION%.zipecho [STEP 7] 生成版本信息...
echo { "version": "!VERSION!", "time": "%DATE% %TIME%", "url": "!ACCESS_URL!" } > "%DEPLOY_ROOT%\current.json"
echo {
echo "current": "!VERSION!",
echo "time": "%DATE% %TIME%",
echo "versions": [
for /d %%i in ("%DEPLOY_ROOT%\builds\*") do (set V=%%~nxiecho { "version": "!V!", "path": "/builds/!V!" },
)
echo ]
echo } > "%DEPLOY_ROOT%\versions.json"
:: 更新版本清單
dir %DEPLOY_ROOT%\builds /AD /B /O-N > %DEPLOY_ROOT%\versions.json:: ========== 8. 清理舊版本 ==========
echo [STEP 7] 清理舊構建...
set KEEP_BUILDS=20
for /f "skip=%KEEP_BUILDS% delims=" %%i in ('dir /b /o-d /ad "%DEPLOY_ROOT%\builds\build_*" 2^>nul') do (rmdir /s /q "%DEPLOY_ROOT%\builds\%%i"
):: ========== 9. 輸出結果 ==========
echo [SUCCESS] 構建上傳完成
echo 包下載鏈接: %ACCESS_URL%
下面是我的打包歷史存儲
最終下載打好的包,使用微信開發者工具手動上傳即可,如果打包選擇不上傳cdn,那包體中會包含remote,是一個完整的包體,包體太大微信開發者工具是傳不上去的