多人开发小程序设置体验版的痛点
抛出痛点
在分配任务时,我们将需求分为三个分支任务,分别由前端A、B、C负责:
- 前端A: HCC-111-实现登录功能
- 前端B: HCC-112-实现用户注册
- 前端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
相关文章:
多人开发小程序设置体验版的痛点
抛出痛点 在分配任务时,我们将需求分为三个分支任务,分别由前端A、B、C负责: 前端A: HCC-111-实现登录功能前端B: HCC-112-实现用户注册前端C: HCC-113-实现用户删除 相应地,我们创建三个功能分支: feature_HCC-111-实现登录功能feature_HCC-112-实现用户注册feature_HCC-1…...
【Kubernetes】常见面试题汇总(七)
目录 20.简述 Kubernetes 创建一个 Pod 的主要流程? 21.简述 Kubernetes 中 Pod 的重启策略? 20.简述 Kubernetes 创建一个 Pod 的主要流程? Kubernetes 中创建一个 Pod 涉及多个组件之间联动,主要流程如下: &#…...
EmguCV学习笔记 C# 11.1 DnnInvoke类
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…...
论文解读 | ACL2024 Outstanding Paper:因果指导的主动学习方法:助力大语言模型自动识别并去除偏见...
点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 点击阅读原文观看作者直播讲解回放! 作者简介 孙洲浩,哈尔滨工业大学SCIR实验室博士生 概述 尽管大语言模型(LLMs)展现出了非常强大的能力,但它们仍然…...
xLSTM模型学习笔记
笔记来源:bilibili LSTM 回顾 原始的 LSTM 是为了解决 RNN 时序反向传播中梯度消失和爆炸问题而提出的。 其所谓的门控机制,其实就是一种时序上的注意力机制,相当于把不同时间进行"掺和",是对时序信息的一种选择性控制…...
woocommerce 调用当前product_tag 为标题
要在 WooCommerce 中调用当前产品标签(product tag)作为标题,你可以使用以下代码。这段代码将获取当前产品标签的名称,并将其显示为标题。 <?php // 获取当前产品标签名称 $current_tag single_term_title(, false);// 检查是…...
音视频开发:基于sdl的pcm播放器
源码 /*** SDL2播放PCM*** 本程序使用SDL2播放PCM音频采样数据。SDL实际上是对底层绘图* API(Direct3D,OpenGL)的封装,使用起来明显简单于直接调用底层* API。* 测试的PCM数据采用采样率44.1k, 采用精度S16SYS, 通道数2** 函数调…...
[产品管理-6]:NPDP新产品开发 - 4 - 战略 - 创新支持战略,支持组织的总体创新战略(平台战略、技术战略、营销战略、知识产权战略、能力建设战略)
目录 一、创新支持战略概述 二、平台战略:大平台小产品战略 2.1 概述 1、平台战略的定义 2、平台战略的特点 3、平台战略的应用领域 4、平台战略的成功案例 5、平台战略的发展趋势 2.2 大平台小产品战略 1)大平台的建设 2)、小产品…...
Cursor:程序员的AI助手,开启智能编程新时代
在当今快节奏的软件开发世界,效率和准确性是成功的关键。而 Cursor,作为一款创新的人工智能编程工具,正在极大地改变着编程的面貌,为开发者带来前所未有的便捷与惊喜。 智能代码生成 Cursor 利用强大的人工智能模型,…...
OpenAI 刚刚发布了新的Sora视频——实现的真人效果令人惊叹
在 YouTube 上发布了两段由专业创作者制作的新的“Sora Showcase”视频。这些视频展示了尚未发布的 Sora AI 视频模型的惊人潜力。 Sora 于今年二月首次宣布,但由于生成时间、成本和错误信息的潜在风险,光年AI 仅向一小部分创作者 开放了该模型。 自So…...
计算机视觉学习路线
计算机视觉是一门让机器理解和解释视觉世界的科学,它涉及到图像识别、图像处理、模式识别等多个方向。学习计算机视觉的路线通常包括以下几个阶段: 数学和编程基础:需要掌握微积分、线性代数、概率论等数学知识,以及Python或C等编…...
JNPF快速开发平台在企业中的应用
随着数字化转型的浪潮席卷全球,企业纷纷寻求高效、灵活的解决方案以适应快速变化的市场需求。在这一背景下,低代码开发平台应运而生,成为数字经济的“软基建”。今天,我们就来探讨JNPF快速开发平台如何在企业中发挥作用࿰…...
Mysql高级篇(中)—— 索引优化
Mysql高级篇(中)—— 索引优化 一、索引分析案例案例 1:单表查询案例 2:两表连接查询案例 3:三表连接查询 二、避免索引失效常见索引失效场景简述场景 1场景 2场景 3场景 4场景 5场景 6 三、索引优化文字版示例版 一、…...
electron: 将网址打包成exe桌面应用
项目场景: 在项目开发的过程中,需要将应用搭建在不同的硬件上。如需要在一个触屏显示器上展示企业相关的应用。 如果专门去开发一个这样的应用,不划算;这时候考虑将网址打包成exe应用,并安装触屏器上,就可…...
【Python篇】PyQt5 超详细教程——由入门到精通(中篇二)
文章目录 PyQt5超详细教程前言第7部分:生成图表与数据可视化7.1 matplotlib 与 PyQt5 的结合7.2 在 PyQt5 中嵌入 matplotlib 图表示例 1:嵌入简单的 matplotlib 图表代码详解: 7.3 动态生成图表示例 2:动态更新图表代码详解&…...
2024/9/10 小型PLC典型应用1:含步进电机+变频器+触摸屏
主要是讲脉冲控制步进,因为etherCat是标准化的,直接通过轴控指令即可控制;canopen也涉及轴控指令,但配置稍微有点不一样。 控制本体端口的步进,通过发脉冲或者脉冲定位信号。 但这个4PM只有单独的轴控指令,…...
RGB与CMYK互转
先定义一个CMYK数据结构: typedef struct struCMYK {int m_nC;int m_nM;int m_nY;int m_nK; }CMYK;RGB转CMYK void CvtRGB2CMYK(COLORREF& clr, CMYK& cmyk) {double dR GetBValue(clr) / 255.0;double dG GetGValue(clr) / 255.0;double dB GetRValue…...
滴~“TOP期刊体验卡”已到期!公认水刊的尽头,还得是你MDPI
【SciencePub学术】本期,给大家介绍的是1本MDPI旗下的计算机类SCI——《Remote Sensing》。 优点VS缺点 • 期刊分区一直维持在较高水平 • 审稿速度极快,1-2个月录用见刊 • 年刊文量大,收稿多 • 期刊自引率较高 • 期刊系统初筛较难 • …...
ASUS华硕ROG幻16 Air 2024款锐龙AI版GA605WI,GA605WV工厂模式原厂Win11系统,含MyASUS WinRE恢复重置还原功能
适用型号:【GA605WI、GA605WV】,原装出厂Windows11系统工厂包下载 链接:https://pan.baidu.com/s/1IVolLwB7fddGKZY0IxOqaA?pwd62e2 提取码:62e2 华硕原装系统工厂安装包,带有MyASUS WinRE RECOVERY恢复功能、自带…...
想入行在线教育?你必须知道的十件事
在最近几年受新冠疫情和异常天气的影响,越来越多的教育活动被迫转移到线上。然而,在线课程的短板也很明显,大部分在线教育工作者难以有效地引导学生集中注意力,并且无法像线下授课一样进行同步考试。 那么,有什么办法…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
