前言
Taro + miniprogram-ci 进行小程序代码的上传、预览等操作。
准备
下载密钥及 IP 白名单配置
密钥文件 private.xxxxxx.key 放在项目的根目录下。
安装依赖
- yargs
- 获取命令行参数
- miniprogram-ci
- 微信小程序官方提供的小程序代码的上传、预览工具
创建发布程序文件
在根目录新建文件 deploy.js 文件,如下。设置好 appid、projectPath、privateKeyPath。
const ci = require('miniprogram-ci')const yargs = require('yargs')const argv = yargs.argv// 开发版: npm run deploy -- --type=develop --v=1.1.1 --robot=1 --desc=我是描述// 体验版: npm run deploy -- --type=trial --v=1.1.1 --robot=1 --desc=我是描述;(async () => { const { type = 'develop', v: version, robot = 2, desc } = argv; console.log(`type: ${type}`); console.log(`version: ${version}`); console.log(`desc: ${desc}`); console.log(`robot: ${robot}`); const project = new ci.Project({ appid: 'appid', type: 'miniProgram', projectPath: 'projectPath', privateKeyPath: 'privateKeyPath', ignores: ['node_modules/**/*'], }); const defaults = { project, desc, setting: { es6: false, urlCheck: true, postcss: false, minified: false }, // onProgressUpdate: console.log, }; switch (type) { case 'develop': const previewConfig = Object.assign({}, defaults, { qrcodeFormat: 'image', qrcodeOutputDest: `qrcode/preview-qrcode-v${version}.jpg`, robot, }); await ci.preview(previewConfig); break; case 'trial': const uploadConfig = Object.assign({}, defaults, { version, robot: 1, }); await ci.upload(uploadConfig); break; default: break; }})();
文件接收通过命令行传入的动态参数有:
- type
- 构建类型。develop: 开发版本; trial: 体验版
- v
- 版本号
- robot
- 机器人编号。1: 体验版专属; 其他不限
- desc
- 发布的描述
添加执行脚本
在 package.json 的 script 添加执行脚本,如下:
"scripts": {
...
"deploy": "node deploy.js"
}
Jenkins 配置
安装所需插件
- NodeJS
- description setter
- GitBucket
新建任务
Jenkins 工作台 -> 新建任务,构建一个自由风格的软件项目。

配置 GitBucket
勾选 This project is parameterized,通过“添加参数”配置构建时所需的参数选项。具体可根据各自的需要定制。





源码仓库
下图中 $BRANCH 是动态获取 Git 远程仓库分支设置。

使用构建变量
可以获取当前构建人的信息。

配置构建的 Execute shell

npm install --registry=http://registry.npm.taobao.orgnpm rebuild node-sassnpm run build:weappnpm run deploy -- --type=${BUILD_TYPE} --v=${VERSION} --robot=${ROBAT} --desc=${DESC}
--type=${BUILD_TYPE} --v=${VERSION} --robot=${ROBAT} --desc=${DESC} 这些值是在 “配置 GitBucket” 时 “添加参数” 中参数化配置获取。
构建后二维码的输出

<img src="http://localhost:8080/job/taro-weapp-normal/ws/qrcode/preview-qrcode-v${VERSION}.jpg" width="200" height="200" /><br/>构建类型:${BUILD_TYPE}<br />使用微信扫码(该开发版有效期为半个小时)
效果
由于体验版无法生成二维码,导致构建体验版时二维码不显示,如下图第一张图。

miniprogram-ci 不仅只和 taro 结合使用,其他的小程序开发框架、甚至是微信原生开发也是可以用这样的方法实现 Jenkins 自动构建。参数化的构建过程可以结合各自的业务需要进行设置。