Skip to content

Commit 4ee422d

Browse files
authored
Merge pull request #988 from Kingrd97/feat/wasmsplit-ci
Feat/wasmsplit ci
2 parents 8ce25f2 + f9df3e7 commit 4ee422d

File tree

2 files changed

+136
-0
lines changed

2 files changed

+136
-0
lines changed

Design/WasmSplit.md

+136
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
- [重复收集与生成](#重复收集与生成)
1919
- [关闭分包](#关闭分包)
2020
- [注意事项](#注意事项)
21+
- [CI工具](#CI工具)
2122
- [FAQ](#faq)
2223
- [分包是否是必要的](#分包是否是必要的)
2324
- [收集到什么时候可以结束](#收集到什么时候可以结束)
@@ -210,6 +211,141 @@ android和iOS收集完,基本就可以测试和发布了
210211

211212
如果上线后,有玩家遇到新增函数个数,分包插件上也会更新(主要来源是iOS高性能),或者收到小游戏数据助手的相关告警,这个时候要继续生成分包,同时提审发布
212213

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+
![alt text](WasmSplitCI.png)
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 密钥检验失败,请检查密钥是否正确 验签失败,请检查公钥私钥是否匹配
213349
## FAQ
214350

215351
### 分包是否是必要的

Design/WasmSplitCI.png

31.8 KB
Loading

0 commit comments

Comments
 (0)