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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/81138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣刷题(第三十六天)

灵感来源 - 保持更新,努力学习 - python脚本学习 多数元素 解题思路 这道题是要找出数组中出现次数超过一半的元素。有几种不同的方法可以解决这个问题: 哈希表统计法:遍历数组,用哈希表统计每个元素的出现次数,…

关于读取CH584单片机的IO电平出现到的乌龙

本来是调用的库里的 uint8_t get_wake_up_sta (void) {return GPIOB_ReadPortPin(GPIO_Pin_10);//return cc_gpio_get_in_io (WAKUP_CH);} 然后读出来是0,我都配置上拉了。 搞不到原因。 最后是CH584单片机只有0和非零两种状态,读出来1024被转换成无…

Opencv常见学习链接(待分类补充)

文章目录 1.常见学习链接 1.常见学习链接 1.Opencv中文官方文档 2.Opencv C图像处理:矩阵Mat 随机数RNG 计算耗时 鼠标事件 3.Opencv C图像处理:亮度对比度饱和度高光暖色调阴影漫画效果白平衡浮雕羽化锐化颗粒感 4.OpenCV —— 频率域滤波&#xff…

anaconda、miniconda、conda的关系及miniconda安装

anaconda、miniconda、conda的关系及miniconda安装 文章目录 前言正文定义关系Linux安装miniconda新建一个python3.8环境 参考 前言 本文用于记录关于Anaconda、conda和Miniconda的定义及其关系的总结123: 正文 定义 conda 一个跨平台的开源包管理和环境管理工具…

2024-2025年AI领域重大事件深度解析:技术革命、产业重构与未来挑战

一、技术突破:从多模态到具身智能的跨越式演进 1. 生成式AI的“核爆级”升级 多模态融合:OpenAI的GPT-4o实现文本、图像、语音的实时交互,GPQA基准测试得分达87.7%,在科学推理和编程任务中表现卓越1。谷歌的Gemini 2.0 Flash支持…

城市地下“隐形卫士”:激光甲烷传感器如何保障燃气安全?

城市“生命线”面临的安全挑战 城市地下管网如同人体的“血管”和“神经”,承载着燃气、供水、电力、通信等重要功能,一旦发生泄漏或爆炸,将严重影响城市运行和居民安全。然而,由于管线老化、违规施工、监管困难等问题&#xff0…

融云 uni-app IMKit 上线,1 天集成,多端畅行

融云 uni-app IMKit 正式上线,支持一套代码同时运行在 iOS、Android、H5、小程序主流四端,集成仅需 1 天,并可确保多平台的一致性体验。 融云 uni-app IMKit 在 Vue 3 的高性能加持下开发实现,使用 Vue 3 Composition API&#x…

《Claude:人工智能界的璀璨新星》

一、Claude 登场:AI 新时代的震撼开篇 在科技飞速发展的今天,人工智能(AI)已经成为推动社会进步和创新的核心力量。从智能语音助手到自动驾驶汽车,从图像识别技术到自然语言处理,AI 正以惊人的速度渗透到我…

Python中tqdm进度条工具和enumerate函数的使用详解

tqdm进度条工具 tqdm 是 Python 中一个非常流行的 进度条显示工具库,常用于迭代操作的可视化,比如训练神经网络、批量数据处理等任务。 一、tqdm 是什么? tqdm 全称是 taqaddum(阿拉伯语,意为“进展”)&a…

yum命令常用选项

刷新仓库列表 sudo yum repolist清理 Yum 缓存并生成新的缓存 sudo yum clean all sudo yum makecache验证 EPEL 源是否已正确启用 sudo yum repolist enabled安装软件包 sudo yum install <package-name> -y更新软件包 sudo yum update -y仅更新指定的软件包。 su…

linux debug技术

Linux是当今应用最广泛的免费和开源操作系统&#xff0c;它是一个复杂的分布式操作系统。它的内核的强大和灵活性已成为引用它的原因之一。在掌握Linux内核的过程中&#xff0c;调试工具可以帮助开发人员获得更深入的反思和理解。下面有25种不可或缺的Linux内核调试工具&#x…

【LinkedList demo 内部类讲说】

LinkedList demo 内部类讲说 1. Node节点2.MyLinkedList3. LinkedListTest 测试类 1. Node节点 public class Node<T> {private Node<T> pre;private Node<T> next;private T data;public Node() {}public Node getPre() {return pre;}public void setPre(N…

html主题切换小demo

主题切换功能为网页和应用程序提供了多样化的视觉风格与使用体验。实现多主题切换的技术方案丰富多样&#xff0c;其中 CSS 变量和 JavaScript 样式控制是较为常见的实现方式。 以下是一个简洁的多主题切换示例&#xff0c;愿它能为您的编程之旅增添一份趣味。 代码展示 <…

【数据结构】

一、架构梳理 线性&#xff08;1:1) 线性表 顺序存储 –> arr 链式存储 –> 指针 &#xff08;有头&#xff0c;无头&#xff09; 有头是指有一个不存数据的头&#xff0c;始终作为这个链表的起点。 会更加简单&#xff0c;无头的话&#xff0c;更改首部节点会麻烦。 头…

UML学习指南:从零入门到实战应用

为零基础学习者设计的UML技术文档&#xff0c;旨在通过详细解释和实际案例&#xff0c;从零开始掌握UML。 UML学习指南&#xff1a;从零入门到实战应用 目录 引言&#xff1a;UML是什么&#xff1f;为什么学习UML&#xff1f; 1.1 什么是UML&#xff1f;1.2 为什么我们需要UM…

Matlab实战训练项目推荐

以下是一系列适合不同技能水平的 MATLAB 实战训练项目&#xff0c;涵盖基础编程、数据分析、信号处理、图像处理、控制系统、机器学习等领域。这些项目可帮助你巩固理论知识并提升实际应用能力。 一、基础项目&#xff08;适合初学者&#xff09; 矩阵运算与可视化 目标&#x…

从零开始:Python语言进阶之异常处理

一、认识异常&#xff1a;程序运行中的“意外事件” 在编写Python程序时&#xff0c;即使代码语法完全正确&#xff0c;运行过程中也可能遭遇各种意外情况。这些意外被称为异常&#xff0c;它们会打断程序的正常执行流程。例如&#xff0c;当我们尝试打开一个不存在的文件、用0…

Groovy:Java 的简洁版

Groovy 是一种 动态、面向对象的编程语言&#xff0c;运行在 Java 虚拟机&#xff08;JVM&#xff09;上&#xff0c;并与 Java 高度兼容。你可以把它理解为“Java 的简洁版 动态特性 脚本语言的灵活性”。 &#x1f9e0; Groovy 的核心特点 特性说明✅ 与 Java 高度兼容可以…

生成模型——PixelRNN与PixelCNN

一、PixelRNN PixelRNN 是一种基于循环神经网络&#xff08;RNN&#xff09;的像素级生成模型&#xff0c;通过逐个像素地生成图像来构建完整的图像&#xff0c;其核心思想是将图像中的像素视为序列&#xff0c;并利用 RNN 的能力来捕捉像素之间的依赖关系。 序列生成&#xf…

每日算法刷题Day14 5.24:leetcode不定长滑动窗口求子数组个数越长越合法4道题,用时1h20min

3. 3325.字符至少出现K次的子字符串I(中等&#xff0c;学习优化) 3325. 字符至少出现 K 次的子字符串 I - 力扣&#xff08;LeetCode&#xff09; 思想 1.给你一个字符串 s 和一个整数 k&#xff0c;在 s 的所有子字符串中&#xff0c;请你统计并返回 至少有一个 字符 至少…