字节笔记本
2026年8月9日
星球总动员 · 微信小游戏部署工作流
星球总动员(微信小游戏)的完整部署工作流记录。包含 AppID、AppSecret、代码上传密钥、aliyun 构建机配置、miniprogram-ci 自动上传命令,以及从代码同步到提审的全流程。本文档含敏感密钥,仅供本人使用。
项目信息
| 项 | 值 |
|---|---|
| 游戏名 | 星球总动员 |
| 类型 | 微信小游戏(休闲合成) |
| AppID | wxce6c1c92cd53d256 |
| AppSecret | 17cd5d84ba2f80e2d690efe0a63b6655 |
| 项目本地路径 | /Users/pan/Desktop/小程序 /星球总动员(注意「小程序 」后有空格) |
| 构建机 | aliyun(47.106.70.103,root,固定 IP 已配白名单) |
AppSecret 用途:后端密钥,调用微信服务端 API 时用(如云存档、获取 openid)。当前纯单机游戏暂未使用,但保留备用。绝不能写入前端代码(微信提审会扫描,发现就拒)。
代码上传密钥(miniprogram-ci 专用)
微信小游戏「代码上传密钥」,用于 miniprogram-ci 命令行自动上传。
| 项 | 值/位置 |
|---|---|
| 密钥文件(本机) | /Users/pan/Downloads/private.wxce6c1c92cd53d256.key |
| 密钥文件(aliyun) | /root/planet-rally/scripts/private.key(权限 600) |
| 下载地址 | mp.weixin.qq.com → 管理 → 开发管理 → 开发设置 → 小游戏代码上传 |
| IP 白名单 | 已配 47.106.70.103(aliyun 公网 IP) |
密钥遗失需到微信公众平台重置。重置后需重新下载并上传到 aliyun。
aliyun 构建机环境
主机: 47.106.70.103(ssh aliyun,root 用户)
系统: Debian 13, x86_64
Node: v24.13.0
npm: 11.6.2
项目目录: ~/planet-rally/
脚本目录: ~/planet-rally/scripts/(含 upload.js, private.key, node_modules)项目目录结构(aliyun 上,已排除浏览器/截图文件):
~/planet-rally/
├── game.js # 微信入口
├── game.json
├── project.config.json # AppID/编译配置
├── project.private.config.json
├── assets/icon.png
├── js/ # 8 个真机模块
│ ├── config.js
│ ├── physics.js
│ ├── effects.js
│ ├── render.js
│ ├── audio.js
│ ├── haptics.js
│ ├── leaderboard.js
│ └── main.js
└── scripts/
├── upload.js # 上传脚本
├── private.key # 代码上传密钥(chmod 600)
├── package.json # miniprogram-ci 依赖
└── node_modules/完整发布流程
日常发版(改完代码后)
第 1 步:本地构建 bundle(如果改了 js/ 源码)
cd ~/Desktop/小程序\ /星球总动员
node scripts/build-bundle.js # 重建 browser-bundle.js(预览页用)
node scripts/smoke-test.js # 冒烟自检(可选)第 2 步:同步代码到 aliyun
cd ~/Desktop/小程序\ /星球总动员
rsync -avz --delete \
--exclude='node_modules' \
--exclude='.wrangler' \
--exclude='dist-pages' \
--exclude='screenshots' \
--exclude='scripts' \
--exclude='js/browser-bundle.js' \
--exclude='js/preview-hook.js' \
--exclude='index.html' \
--exclude='preview.html' \
-e ssh \
./ aliyun:~/planet-rally/第 3 步:在 aliyun 上传到微信
# 改版本号即可(如 1.0.1, 1.0.2)
ssh aliyun 'cd ~/planet-rally/scripts && node upload.js --version 1.0.1 --desc "版本描述"'上传参数:
--version:版本号(必填)--desc:版本备注(选填)--robot:CI 机器人编号 1-30(默认 1)--key:密钥路径(默认 scripts/private.key)
第 4 步:提交审核(必须人工网页操作)
微信不开放审核提交 API。上传后登录:
- mp.weixin.qq.com
- 管理 → 版本管理 → 找到刚上传的版本
- 点「提交审核」
- 填游戏名、类目、截图,提交
- 等 1-3 个工作日
一键发布(合并 1-3 步)
把下面存成 ~/deploy-planet.sh:
#!/bin/bash
set -e
VERSION="${1:-1.0.1}"
DESC="${2:-自动发布}"
cd ~/Desktop/小程序\ /星球总动员
echo "=== 1. 构建 bundle ==="
node scripts/build-bundle.js
echo "=== 2. 同步到 aliyun ==="
rsync -avz --delete \
--exclude='node_modules' --exclude='.wrangler' --exclude='dist-pages' \
--exclude='screenshots' --exclude='scripts' \
--exclude='js/browser-bundle.js' --exclude='js/preview-hook.js' \
--exclude='index.html' --exclude='preview.html' \
-e ssh ./ aliyun:~/planet-rally/
echo "=== 3. 上传到微信 ==="
ssh aliyun "cd ~/planet-rally/scripts && node upload.js --version $VERSION --desc \"$DESC\""
echo "=== ✓ 完成,去 mp.weixin.qq.com 提交审核 ==="用法:bash ~/deploy-planet.sh 1.0.2 "修复震动反馈"
上传脚本(upload.js)关键参数
脚本位于 aliyun: /root/planet-rally/scripts/upload.js
核心配置(硬编码在脚本里):
appid:wxce6c1c92cd53d256type:miniGameprojectPath:~/planet-rallyprivateKeyPath:scripts/private.keysetting:{ es6: true, minify: true }ignores:['node_modules/**/*', 'scripts/**', 'README.md', '*.log']
微信包内容(实际上传的文件)
经 packOptions.ignore 过滤后,微信包只含真机必需文件,约 79 KB:
game.js, game.json
project.config.json, project.private.config.json
assets/icon.png
js/ 下 8 个模块(config/physics/effects/render/audio/haptics/leaderboard/main)排除了:README.md, screenshots/, scripts/, js/browser-bundle.js, js/preview-hook.js, index.html, preview.html, dist-pages/
历史版本记录
| 版本 | 日期 | 说明 |
|---|---|---|
| 1.0.0 | 2026-08-10 | 首次上传。含真机音效修复、主循环帧率修复、分享复活、震动反馈、状态机重构 |
安全注意事项
- AppSecret 不在任何代码文件中(仅在此文档)
- 代码上传密钥 chmod 600,仅 root 可读
- .gitignore 已屏蔽
*.key,node_modules,scripts/package.json - AppSecret 如泄露,到微信公众平台「开发设置」重置
- 代码上传密钥如遗失,同页面重置后重新下载
排错
上传报 IP 白名单错误
到微信公众平台「开发设置」把 47.106.70.103 加入 IP 白名单(已配过,正常不会报)。
上传报密钥错误
检查密钥文件是否过期或被重置。到微信公众平台重新下载,然后:
scp ~/Downloads/private.wxce6c1c92cd53d256.key aliyun:~/planet-rally/scripts/private.key
ssh aliyun 'chmod 600 ~/planet-rally/scripts/private.key'代码改动没生效
确认执行了 rsync 同步(第 2 步)。上传脚本读的是 aliyun 上的 ~/planet-rally/,不是本地目录。
miniprogram-ci 依赖丢失
ssh aliyun 'cd ~/planet-rally/scripts && npm install --no-audit --no-fund --registry=https://registry.npmmirror.com'