Jenkins 构建微信小程序(Taro版)

1,576 阅读1分钟

前言

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 自动构建。参数化的构建过程可以结合各自的业务需要进行设置。