|
18 | 18 | - [重复收集与生成](#重复收集与生成)
|
19 | 19 | - [关闭分包](#关闭分包)
|
20 | 20 | - [注意事项](#注意事项)
|
| 21 | + - [CI工具](#CI工具) |
21 | 22 | - [FAQ](#faq)
|
22 | 23 | - [分包是否是必要的](#分包是否是必要的)
|
23 | 24 | - [收集到什么时候可以结束](#收集到什么时候可以结束)
|
@@ -210,6 +211,141 @@ android和iOS收集完,基本就可以测试和发布了
|
210 | 211 |
|
211 | 212 | 如果上线后,有玩家遇到新增函数个数,分包插件上也会更新(主要来源是iOS高性能),或者收到小游戏数据助手的相关告警,这个时候要继续生成分包,同时提审发布
|
212 | 213 |
|
| 214 | +## CI工具 |
| 215 | +wasm代码分包作为微信开发者工具的插件,需要开发者在微信开发者工具中手动操作,在高频发布场景下效率偏低 |
| 216 | + |
| 217 | +因此我们提供wasmsplit-ci工具,可以不打开微信开发者工具,独立使用进行分包的各种操作(真机收集除外),供开发者集成到ci流水线上 |
| 218 | + |
| 219 | +### 功能 |
| 220 | +wasmsplit-ci目前提供以下能力: |
| 221 | +- 打开分包 |
| 222 | +- 生成分包 |
| 223 | +- 获取分包信息 |
| 224 | +- 关闭分包 |
| 225 | + |
| 226 | +建议使用场景: |
| 227 | +- 大版本开发阶段:按新增函数阈值定期生成profile包 |
| 228 | +- 小版本(代码无修改或无新增函数)或者bugfix阶段:直接走增量分包生成release包 |
| 229 | + |
| 230 | +### 准备工作 |
| 231 | +#### 密钥配置 |
| 232 | +wasmsplit-ci的使用需要传入密钥,需要在mp管理端-开发支持-研发工具箱-密钥管理-Wasm分包CI鉴权配置密钥 |
| 233 | +### 命令行调用 |
| 234 | +#### 安装 |
| 235 | +通过npm获取 |
| 236 | +``` |
| 237 | +npm install -g wasmsplit-ci |
| 238 | +``` |
| 239 | +#### 支持命令 |
| 240 | +打开分包 |
| 241 | +``` |
| 242 | +Usage: wasmsplit-ci init [options] |
| 243 | +init miniprogram |
| 244 | +Options: |
| 245 | + -p, --project-path <projectPath> |
| 246 | + project path, 小游戏项目的路径, 必填 |
| 247 | + -k, --private-key-path <privateKeyPath> |
| 248 | + private key path, 私钥文件的保存位置, 必填 |
| 249 | + -d, --version-description <versionDescription> |
| 250 | + version description, 版本描述 |
| 251 | + -r, --refer-md5 <originalMd5> |
| 252 | + original code md5, 历史代码包md5 |
| 253 | + -h, --help |
| 254 | + display help for command |
| 255 | +``` |
| 256 | +init命令会检查当前项目(appid+code_md5)的分包状态,完成必须的前置准备工作 |
| 257 | + |
| 258 | +**流水线每次执行**都需调用init命令进行初始化操作 |
| 259 | + |
| 260 | +**如果本次流水线需要增量更新**则需传入供增量参考的游戏包的md5 |
| 261 | + |
| 262 | +增量更新必须在项目首次分包时使用 |
| 263 | + |
| 264 | +示例 |
| 265 | +``` |
| 266 | +# 首次分包,需要增量分包 |
| 267 | +wasmsplit-ci init -p ./minigame-dir/ -k ./ci-privatekey -d "v1.0.0" -r $REFER_MD5 |
| 268 | +# 非首次分包,或者首次但不需要增量分包 |
| 269 | +wasmsplit-ci init -p ./minigame-dir/ -k ./ci-privatekey -d "v1.0.0" |
| 270 | +``` |
| 271 | +查看当前分包信息 |
| 272 | +``` |
| 273 | +Usage: wasmsplit-ci getinfo [options] |
| 274 | +get minigame function info |
| 275 | +Options: -p, --project-path <projectPath> |
| 276 | + project path, 小游戏项目路径, 必填 |
| 277 | + -k, --private-key-path <privateKeyPath> |
| 278 | + private key path, 私钥文件路径, 必填 |
| 279 | + -h, --help |
| 280 | + display help for command |
| 281 | +``` |
| 282 | +getinfo获取信息,并以json格式保存在"$projectpath/.plugincache/codesplit/gameinfo.txt"中。 |
| 283 | + |
| 284 | +getinfo的json字段说明 |
| 285 | + |
| 286 | +| 键 | 说明 | |
| 287 | +| --- | --- | |
| 288 | +| isProfile | 当前分包版本(profile或release) | |
| 289 | +| appid | 当前项目AppId | |
| 290 | +| md5 | 当前代码md5 | |
| 291 | +| subVersion | 当前分包version | |
| 292 | +| apiVersion | 当前后台服务版本 | |
| 293 | +| sourceFuncNum | 原始包函数总个数 | |
| 294 | +| increaseNum | 新增收集函数个数 | |
| 295 | +| currentNum | 当前首包函数个数 | |
| 296 | + |
| 297 | +示例 |
| 298 | +``` |
| 299 | +wasmsplit-ci getinfo -p ./minigame-dir/ -k ./ci-privatekey |
| 300 | +``` |
| 301 | +生成分包 |
| 302 | +``` |
| 303 | +Usage: wasmsplit-ci dosplit [options] |
| 304 | +split minigame package |
| 305 | +Options: -p, --project-path <projectPath> |
| 306 | + project path, 小游戏项目路径, 必填 |
| 307 | + -k, --private-key-path <privateKeyPath> |
| 308 | + private key path, 私钥文件路径, 必填 |
| 309 | + --release |
| 310 | + release, otherwise profile, 是否release分包 |
| 311 | + -h, --help |
| 312 | + display help for command |
| 313 | +``` |
| 314 | +有新增函数即可调用,命令执行成功后会**下载分包结果,应用到minigame-dir目录**,执行失败可重复执行 |
| 315 | + |
| 316 | +生成分包后,可随时上传体验版 |
| 317 | + |
| 318 | +示例 |
| 319 | +``` |
| 320 | +# profile |
| 321 | +wasmsplit-ci dosplit -p ./minigame-dir/ -k ./ci-privatekey |
| 322 | +#release |
| 323 | +wasmsplit-ci dosplit -p ./minigame-dir/ -k ./ci-privatekey --release |
| 324 | +``` |
| 325 | +关闭代码分包 |
| 326 | +``` |
| 327 | +Usage: wasmsplit-ci disable [options] |
| 328 | +disable code split Options: |
| 329 | + -p, --project-path <string> project path, 小游戏项目路径, 必填 |
| 330 | + -h, --help display help for command |
| 331 | +``` |
| 332 | +disable命令用于关闭代码分包,和插件的关闭代码分包作用相同 |
| 333 | + |
| 334 | +示例 |
| 335 | +``` |
| 336 | +wasmsplit-ci disable -p ./minigame-dir/ |
| 337 | +``` |
| 338 | +### 流水线示例流程 |
| 339 | + |
| 340 | +### 注意事项 |
| 341 | +- 此工具不能完成真机收集过程,真机收集仍需开发者单独执行 |
| 342 | +- 分包工具CI不提供预览及上传功能,可以使用微信开发者工具CI进行预览 |
| 343 | +- 请不要将密钥配置文件(id_rsa.conf)放在小游戏项目下,这会导致密钥文件一同被上传 |
| 344 | +- 日志文件保存在$projectpath/.plugincache/codesplit/log目录下,使用两个文件滚动保存(latest.log和backup.log),每个文件保存最大容量为5M |
| 345 | +- 如需更改appid,自行修改项目路径下project.config.json文件中的appid |
| 346 | + |
| 347 | +### 常见问题排查 |
| 348 | +- 错误码:-10000401 密钥检验失败,请检查密钥是否正确 验签失败,请检查公钥私钥是否匹配 |
213 | 349 | ## FAQ
|
214 | 350 |
|
215 | 351 | ### 分包是否是必要的
|
|
0 commit comments