ByteNoteByteNote

字节笔记本

2026年8月9日

星球总动员 · 微信小游戏部署工作流

API中转
¥120

星球总动员(微信小游戏)的完整部署工作流记录。包含 AppID、AppSecret、代码上传密钥、aliyun 构建机配置、miniprogram-ci 自动上传命令,以及从代码同步到提审的全流程。本文档含敏感密钥,仅供本人使用。

项目信息

游戏名星球总动员
类型微信小游戏(休闲合成)
AppIDwxce6c1c92cd53d256
AppSecret17cd5d84ba2f80e2d690efe0a63b6655
项目本地路径/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 构建机环境

text
主机: 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 上,已排除浏览器/截图文件):

text
~/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/ 源码)

bash
cd ~/Desktop/小程序\ /星球总动员
node scripts/build-bundle.js     # 重建 browser-bundle.js(预览页用)
node scripts/smoke-test.js       # 冒烟自检(可选)

第 2 步:同步代码到 aliyun

bash
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 上传到微信

bash
# 改版本号即可(如 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。上传后登录:

  1. mp.weixin.qq.com
  2. 管理 → 版本管理 → 找到刚上传的版本
  3. 点「提交审核」
  4. 填游戏名、类目、截图,提交
  5. 等 1-3 个工作日

一键发布(合并 1-3 步)

把下面存成 ~/deploy-planet.sh:

bash
#!/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: wxce6c1c92cd53d256
  • type: miniGame
  • projectPath: ~/planet-rally
  • privateKeyPath: scripts/private.key
  • setting: { es6: true, minify: true }
  • ignores: ['node_modules/**/*', 'scripts/**', 'README.md', '*.log']

微信包内容(实际上传的文件)

经 packOptions.ignore 过滤后,微信包只含真机必需文件,约 79 KB:

text
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.02026-08-10首次上传。含真机音效修复、主循环帧率修复、分享复活、震动反馈、状态机重构

安全注意事项

  • AppSecret 不在任何代码文件中(仅在此文档)
  • 代码上传密钥 chmod 600,仅 root 可读
  • .gitignore 已屏蔽 *.key, node_modules, scripts/package.json
  • AppSecret 如泄露,到微信公众平台「开发设置」重置
  • 代码上传密钥如遗失,同页面重置后重新下载

排错

上传报 IP 白名单错误

到微信公众平台「开发设置」把 47.106.70.103 加入 IP 白名单(已配过,正常不会报)。

上传报密钥错误

检查密钥文件是否过期或被重置。到微信公众平台重新下载,然后:

bash
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 依赖丢失

bash
ssh aliyun 'cd ~/planet-rally/scripts && npm install --no-audit --no-fund --registry=https://registry.npmmirror.com'
分享: