当前位置: 首页 > news >正文

多人开发小程序设置体验版的痛点

抛出痛点

在分配任务时,我们将需求分为三个分支任务,分别由前端A、B、C负责:

  1. 前端A: HCC-111-实现登录功能
  2. 前端B: HCC-112-实现用户注册
  3. 前端C: HCC-113-实现用户删除

相应地,我们创建三个功能分支:

  • feature_HCC-111-实现登录功能
  • feature_HCC-112-实现用户注册
  • feature_HCC-113-实现用户删除

当所有的前端都开发完成了他们的任务,我们就要开始测试小程序了。但是如果按照以往体验版的测试方式,我们就需要排个顺序。比如,前端 A 先将他的小程序设置为体验版,测试把他的功能测试完成之后,再把前端 B 的设置为体验版,以此类推。可以看出真的很麻烦,而且浪费开发时间,我想你肯定不想在开发的时候突然被叫把你的小程序版本设置为体验版。

解决方案

小程序开发助手 这是一个官方提供的小程序,里面有多个版本的小程序可供选择,很方便测试人员的测试,并且也会节省开发人员的时间。点击版本查看就可以看到所有开发人员提交的最近的一次版本了。这样也不用设置体验版就可以测试最新的提交了。
请添加图片描述

再次抛出痛点

如果前端 A 头上有三个任务单呢?任务单:HCC-121-实现框架搭建,HCC-122-实现在线录屏,HCC-123-实现画板。此时你可能想说, 为啥前端 A 这么多的任务单呢?他命苦啊!

这个时候就需要配合微信的机器人了,我们可以创建多个机器人作为我们提交版本的媒介,这样我们就不受限于微信账号了。

可以在微信的官方文档看到 robot 参数有30个机器人可供选择。

请添加图片描述

接下来看下微信的机器人的使用方式。

miniprogram-ci文档

微信官方是这样介绍这个工具的; miniprogram-ci 是从微信开发者工具中抽离的关于小程序/小游戏项目代码的编译模块。它其实是一个自动上传代码的工具,可以帮助我们自动化的编译代码并且上传到微信。

下面是一个大概得使用的示例,具体还是要参考官方文档。

const ci = require('miniprogram-ci');
(async () => {const project = new ci.Project({appid: 'wxsomeappid',type: 'miniProgram',projectPath: 'the/project/path',privateKeyPath: 'the/path/to/privatekey',ignores: ['node_modules/**/*'],})const previewResult = await ci.preview({project,desc: 'hello', // 此备注将显示在“小程序助手”开发版列表中setting: {es6: true,},qrcodeFormat: 'image',qrcodeOutputDest: '/path/to/qrcode/file/destination.jpg',onProgressUpdate: console.log,// pagePath: 'pages/index/index', // 预览页面// searchQuery: 'a=1&b=2',  // 预览参数 [注意!]这里的`&`字符在命令行中应写成转义字符`\&`})console.log(previewResult)
})()

当我们使用这个脚本上传完代码就可以在小程序开发助手或者小程序管理平台看到以下内容。

微信管理后台
请添加图片描述
小程序开发助手页面
在这里插入图片描述

最后

我们可以使用 miniprogram-ci 配合 Jenkins 实现自动化部署,提交完成代码就可以自动部署了。以下是一个 github 的 actions 示例。当然也可以使用别的方式,例如本地提交,Jenkins提交等。

name: Feature Branch CIon:workflow_dispatch:push:branches: ['feature_*']  # 使用通配符匹配所有feature分支jobs:build_and_deploy:runs-on: ubuntu-lateststeps:- name: Checkout Repositoryuses: actions/checkout@v3- name: Setup Node.jsuses: actions/setup-node@v3with:node-version: '20'cache: 'yarn'- name: Install dependenciesrun: |npm install -g miniprogram-ci cross-envyarn install --frozen-lockfile- name: Build Packagerun: yarn cross-env ENV=PROD uni build -p mp-weixin --mode PROD- name: Create private key filerun: echo "${{ secrets.PRIVATE_KEY }}" > private.key- name: Deploy Packageenv:APP_ID: ${{ secrets.APP_ID }}run: |COMMIT_MESSAGE=$(git log --format=%B -n 1 ${{ github.sha }})if [[ $COMMIT_MESSAGE =~ VERSION-([A-Za-z0-9_]+-[A-Za-z0-9_-]+)_DEV ]]; thenVERSION=${BASH_REMATCH[1]}echo "Extracted Version: $VERSION"miniprogram-ci preview \--pp ./dist/build/mp-weixin \--pkp ./private.key \--appid $APP_ID \--uv "${VERSION}" \-r 7 \--desc "${COMMIT_MESSAGE}" \--upload-description "${COMMIT_MESSAGE}" \--enable-es6 true \--enable-es7 true \--enable-minifyJS true \--enable-minifyWXML true \--enable-minifyWXSS true \--enable-minify true \--enable-bigPackageSizeSupport true \--enable-autoPrefixWXSS trueelseecho "No Version found in commit message. Skipping upload."fi

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 视频推拉流/直播点播EasyDSS平台安装失败并报错“install mediaserver error”是什么原因?
  • Centos7.9部署Gitlab-ce-16.9
  • 【人工智能学习笔记】3_2 机器学习基础之机器学习经典算法介绍
  • 程序员如何写笔记并整理资料?
  • react js 路由 Router
  • 跑步戴的耳机哪个品牌的好?全新测评推荐五大爆款骨传导运动耳机
  • 工业一体机帮助MES系统打通工厂数据采集及目视化
  • Python 如何类与对象
  • 同声翻译+AI+呼叫中心的结合
  • 网络通信安全:全面探索与深入分析
  • 如何保证Redis与Mysql双写一致性?
  • 泰语快速学习方法!速成方法学习!
  • 根据NVeloDocx Word模板引擎生成Word(四)
  • 即插即用篇 | YOLOv8 引入并行的分块注意力 | 北京大学 2024 | 微小目标
  • Linux:从入门到放弃
  • Android框架之Volley
  • github指令
  • JavaScript类型识别
  • js中forEach回调同异步问题
  • leetcode388. Longest Absolute File Path
  • MySQL几个简单SQL的优化
  • node 版本过低
  • SOFAMosn配置模型
  • text-decoration与color属性
  • yii2中session跨域名的问题
  • 分布式事物理论与实践
  • 汉诺塔算法
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 聊聊directory traversal attack
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 山寨一个 Promise
  • 用 Swift 编写面向协议的视图
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 在Unity中实现一个简单的消息管理器
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ‌JavaScript 数据类型转换
  • #Linux(make工具和makefile文件以及makefile语法)
  • #QT(串口助手-界面)
  • %@ page import=%的用法
  • (12)Hive调优——count distinct去重优化
  • (24)(24.1) FPV和仿真的机载OSD(三)
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .Net Core和.Net Standard直观理解
  • .NET 动态调用WebService + WSE + UsernameToken
  • .net 流——流的类型体系简单介绍