当前位置: 首页 > news >正文

cocos creator使用jenkins打包微信小游戏,自动上传资源到cdn,windows版运行jenkins

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,是一个完整的包体,包体太大微信开发者工具是传不上去的

扩展:如果对打包后有特殊批处理,可自己添加,例如我这里打包后需要移动一些文件和压缩图片,

相关文章:

  • JavaWebsocket-demo
  • Spark Core 源码关键环节的深度解析
  • mapbox进阶,手写放大镜功能
  • Windows安装MongoDb.并使用.NET 9连接
  • 前后端的双精度浮点数精度不一致问题解决方案,自定义Spring的消息转换器处理JSON转换
  • [杂学笔记]浏览器多进程与多线程架构、wstring类型、哈希表、红黑树与哈希表的对比、C++标准库Random类
  • 每日算法 -【Swift 算法】寻找字符串中最长回文子串(三种经典解法全解析)
  • 工业物联网网关在变电站远程监控中的安全传输解决方案
  • vscode离线安装组件工具vsix
  • Java安全-Servlet内存马
  • 计算机网络--第一章(下)
  • 贪心算法 Part04
  • Python数据分析实战:Pandas高效处理Excel数据指南
  • DataOutputStream DataInputStream转换流
  • Mysql-数据闪回工具MyFlash
  • IOMMU打开 关闭
  • 【76. 最小覆盖子串】
  • Java使用mybatis-plus做查询时LocalDateTime报错处理方案
  • Oracle Enqueue Names
  • Nginx配置同一端口不同域名或同一IP不同端口
  • 网络规划设计师教程第2版 下载/网站推广优化网址