cocos creator使用jenkins打包流程,打包webmobile

windows电脑使用

如果你的电脑作为打包机,一定要锁定自己的ip,如果ip动态获取,可能后续会导致jenkins无法访问,还需要重新配置jenkins和http-server的端口

从jenkins官网下载windows版 Thank you for downloading Windows Stable installer

1.jenkins安装

比较关键需要注意的几步

(1)选择你电脑的账户和密码,这里一定要设置一下密码,选择有管理员权限的,如果选择第一个无密码的系统账户,可能会导致打包过程中cocos引擎的一些私密文件无法访问

(2)设置唯一的访问端口号,这个端口号是用来访问jenkins服务的,就是你要登录jenkins的地址端口

(3)jdk安装和路径选择,要选择jdk17-jdk21这几个版本,我这里用的jdk21,其他版本可能有问题

2.jenkins在windows电脑不能使用windows服务启动,打包报错,cocos的

error: TypeError: Cannot read property 'getParameter' of null

安装jenkins后,需要手动停止windows服务启动的jenkins,把服务改成手动,不自动

要使用命令行启动,也可以把命令行文件,加载windows的任务程序里,每次登录的时候启动,我这里每次启动jenkins的时候,还会启动打包之后的目录服务,方便访问打包后的链接,或者下载包体,安装http-server插件就可以把文件夹作为一个服务器(npm install http-server -g)

下面是启动代码,需要自己代码改成自己的jenkins 安装路径和jdk路径,还有端口,还有包体服务器路径

复制代码
@echo off
setlocal enabledelayedexpansion

:: ===== 配置 =====
set JENKINS_HOME=D:\Program Files\Jenkins
set JENKINS_WAR=%JENKINS_HOME%\jenkins.war
set JAVA_HOME=C:\Program Files\Java\jdk-21
set JENKINS_PORT=8866
set HTTP_PORT=8090
set DEPLOY_DIR=D:\buildPackage

:: ===== 1. 终止旧进程 =====
taskkill /f /im java.exe /t >nul 2>&1
taskkill /f /im node.exe /t >nul 2>&1

:: ===== 2. 启动http-server(前台) =====
echo [INFO] 启动 http-server...
start "HTTP Server" cmd /k "http-server "%DEPLOY_DIR%" -p %HTTP_PORT% -a 0.0.0.0 --log-format dev"

:: ===== 3. 启动Jenkins(前台) =====
echo [INFO] 启动 Jenkins...
start "Jenkins Server" cmd /k ""%JAVA_HOME%\bin\java" -jar "%JENKINS_WAR%" --httpPort=%JENKINS_PORT% --webroot="%JENKINS_HOME%\war""

:: ===== 4. 保持窗口不退出 =====
echo [INFO] 两个服务已在前台窗口启动...
pause

第一次启动jenkins需要填入默认的密码key,密码在jenkins的安装路径下可以找到

3.登录jenkins 开始新建打包任务,我这里是使用的windows批处理代码,项目使用的是svn,选择Freestyle

可以在这里添加一些参数,用来控制打包动态控制

比如是否是debug模式

如果项目管理也是svn,就需要在jenkins的插件管理里,安装Subversion

然后就是要添加打包代码

下面代码**(需要自己改下具体的安装路径和端口,还有打包生成路径 )如果没有配置转换需求,可以把下面代码中的CONFIG_PATH删除,删除步骤2,直接进行3构建**

复制代码
@echo off
:: 设置控制台代码页为 UTF-8
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
set CONFIG_PATH=%WORKSPACE%\design\config
set WEB_PORT=8090
set BUILD_PLATFORM=web-mobile
set DEPLOY_ROOT="D:\buildPackage\webMobile"

:: ========== 使用Jenkins构建号作为版本 ==========
set VERSION=build-%BUILD_NUMBER%

:: ========== 1. 清理缓存 ==========
echo [STEP 1] 清理缓存...
rmdir /s /q "%PROJECT_PATH%\library"
rmdir /s /q "%PROJECT_PATH%\temp"


:: ========== 2. 执行配置转换批处理文件========== 
echo [STEP 2] 执行配置转换...如果没有需求的,可以删除这里的代码,直接执行下面的3构建 
:: 强制切换到脚本所在目录,直接执行python会有找不到xls文档的报错,可能是python代码内部路径识别的问题
cd /d "%CONFIG_PATH%"
call "win_out.bat"
if %errorlevel% neq 0 (
    echo 错误:配置转换失败
    exit /b 1
)

:: ========== 3. Cocos Creator构建========== 
echo [STEP 3] 开始Cocos Creator构建...
cocosCreator --path "%PROJECT_PATH%" --build "platform=%BUILD_PLATFORM%;md5Cache=true;debug=%isDebug%"
if %errorlevel% neq 0 (
    echo 错误:Cocos构建失败
    exit /b 1
)
:: ========== 4. 版本化部署 ==========
set DEPLOY_DIR=%DEPLOY_ROOT%\builds\!VERSION!
mkdir "%DEPLOY_DIR%" >nul 2>&1
::========= 4.1 复制构建文件 ==========
robocopy "%PROJECT_PATH%\build\%BUILD_PLATFORM%" "%DEPLOY_DIR%" /MIR /NP /NFL /NDL

:: 更新latest符号链接
rmdir /q /s "%DEPLOY_ROOT%\latest" 2>nul
mklink /J "%DEPLOY_ROOT%\latest" "%DEPLOY_DIR%"

:: ========== 5. 记录版本信息 ==========
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!/index.html" },
)
echo    ]
echo } > "%DEPLOY_ROOT%\versions.json"

:: ========== 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%/webMobile/builds/!VERSION!/index.html
set LATEST_URL=http://!IP!:%WEB_PORT%/webMobile/latest/index.html

:: 记录版本信息
echo { "version": "!VERSION!", "time": "%DATE% %TIME%", "url": "!ACCESS_URL!" } > "%DEPLOY_ROOT%\current.json"

:: ========== 7. 输出结果 ==========
echo [SUCCESS] 部署完成
echo 版本专属链接: !ACCESS_URL!
echo 最新版链接: !LATEST_URL!

:: ========== 8. 删除旧的多余的包 ==========
:: 保留最近20个构建
set KEEP_BUILDS=20  

:: 删除旧版本(保留最新的KEEP_BUILD20个)
for /f "skip=%KEEP_BUILDS% delims=" %%i in ('dir %DEPLOY_ROOT%\builds /AD /B /O-N 2^>nul') do (
    rmdir /s /q "%DEPLOY_ROOT%\builds\%%i"
)

:: 更新版本清单
dir %DEPLOY_ROOT%\builds /AD /B /O-N > %DEPLOY_ROOT%\versions.json

endlocal

如果路径中有空格的,比如 set DEPLOY_ROOT=D:\build Package\webMobile,就不能这样写了

要引起来 set DEPLOY_ROOT="D:\build Package\webMobile",否则会有找不到路径的错

下面介绍我这里的一些具体路径,

1.我们创建的打包任务,都在jenkins安装路径下的workspace下

例如 build H5就是我创建的打包任务,这里面是svn拉下来的项目

2.buildPackage是我启动的http-server服务的路径,这里是打包后的内容放的位置,还有版本管理,最多保留20条最近打包的包体

相关推荐
乘云数字DATABUFF4 天前
5分钟部署开源APM Databuff:OpenTelemetry全链路追踪入门实战
运维·后端
荣--6 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森6 天前
动手实战学 Docker — 从零到集群编排完全指南
运维
Avan_菜菜6 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
SelectDB7 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode9 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220709 天前
如何搭建本地yum源(上)
运维
大树8812 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠12 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质12 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务