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" -r
if %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%.zip
echo [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%.zip
echo [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=%%~nxi
echo { "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,是一个完整的包体,包体太大微信开发者工具是传不上去的