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条最近打包的包体

相关推荐
hlsd#2 小时前
轻松实现CI/CD: 用Go编写的命令行工具简化Jenkins构建
运维·ci/cd·go·jenkins
A_Tai23333332 小时前
Linux-04-搜索查找类命令
linux·运维·服务器
开花沼泽.3 小时前
一个linux系统电脑,一个windows电脑,怎么实现某一个文件夹共享
linux·运维·服务器
wanhengidc3 小时前
在线服务器都有哪些用途?
运维·服务器
s_little_monster4 小时前
【Linux】线程池和线程补充内容
linux·运维·服务器·c++·笔记·学习·学习方法
Steps-of-time5 小时前
Linux内核notify通知笔录
linux·运维·服务器
zhaqonianzhu6 小时前
【wsl】命令说明,wsl的虚拟机ubuntu十分好用
linux·运维·ubuntu·wsl
安全系统学习7 小时前
网络安全之浅析Java反序列化题目
运维·开发语言·网络·算法·安全·web安全·php
努力学习的小廉7 小时前
深度理解linux系统—— 进程概念
linux·运维·服务器
我真不会起名字啊9 小时前
每日Bug:(2)共享内存
linux·运维·bug