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

jenkins构建微信小程序并展示二维码

测试小程序的过程中,很多都是在回头和前端开发说一句,兄弟帮我打一个测试版本的测试码,开发有时间的情况下还好,就直接协助了,但是很多时候他们只修复了其中几个bug,其他需要修复的bug代码正在编写,这就遇到了问题,耽误了测试时间,基于此给大家分享一下利用Jenkins去构建微信小程序二维码,并在jenkins上展示最新的二维码图片方便扫描测试。

操作步骤简介

安装 Jenkins 插件,例如 Jenkins Plugin for WeChat Mini Program Builder(微信小程序构建器插件)。

创建新的 Jenkins Pipeline,或者在现有的 Jenkins Pipeline 中启用 WeChat Mini Program Builder 插件。

配置 Jenkins 构建步骤,添加微信小程序构建相关任务。

测试您的微信小程序。

以下是详细的步骤说明:

1、安装 Jenkins 插件

登录 Jenkins 控制台。

单击 Manage Jenkins -> Manage Plugins -> Available.

搜索 WeChat Mini Program Builder 插件并安装。

2、创建新的 Jenkins Pipeline

单击 New Item,选择 Pipeline。

输入 Pipeline 名称和其他相关信息。

选中 Enable Pipeline 功能框,勾选 Enable Scm Polling 并输入 Git URL。

单击 OK 按钮完成Pipeline 设置。

启用 WeChat Mini Program Builder 插件

单击 Configure System -> Global Tools Configuration.

添加微信小程序构建器插件,输入必要的信息(如 App ID, Secret Key)并保存。

3、添加微信小程序构建器插件到 Jenkins Pipeline 中。

配置 Jenkins 构建步骤

单击 New Item -> Build with Parameters.

添加微信小程序相关的步骤到 Jenkins Pipeline 中,例如微信小程序构建任务、打包任务等。

单击 Save.

4、测试您的微信小程序

在 Jenkins 控制台上单击 Build Now 开始构建。

查看 Console Output ,确认没有错误消息。

在移动设备或微信开发者工具中测试您的小程序。

5、请注意,由于微信小程序有一些限制,请务必遵守相关要求,例如大小、格式等。在微信小程序官方文档中有更多详细信息。

示例

以下是一个 Jenkins Pipeline 的示例,用于构建微信小程序:

  1. pipeline {

  2. agent any

  3. parameters {

  4. string(name: 'APP_ID', defaultValue: '', description: 'Your Wechat Mini Program APP ID')

  5. string(name: 'SECRET_KEY', defaultValue: '', description: 'Your Wechat Mini Program Secret Key')

  6. }

  7. stages {

  8. stage('Checkout') {

  9. steps {

  10. checkout scm

  11. }

  12. }

  13. stage('Build') {

  14. steps {

  15. echo 'Building your WeChat Mini Program...'

  16. script {

  17. node {

  18. sh """

  19. npm install

  20. npm run build

  21. """

  22. }

  23. }

  24. }

  25. }

  26. stage('Deploy') {

  27. steps {

  28. script {

  29. node {

  30. def buildDir = '/var/tmp/build'

  31. dir(buildDir) {

  32. // 将构建目录移动到临时位置

  33. sh 'mv dist/* .'

  34. // 安装 WeChat Mini Program Builder 插件

  35. wechatmp init ${params.APP_ID} ${params.SECRET_KEY}

  36. // 构建微信小程序

  37. wechatmp build

  38. }

  39. }

  40. }

  41. }

  42. }

  43. }

  44. }

在上述 Pipeline 中,首先从 SCM 检出代码,然后构建小程序,并最终构建微信小程序。

注意:您需要设置一些 Jenkins 参数,例如 APP_ID 和 SECRET_KEY。这些参数可以在微信开放平台找到。

此外,在构建时,必须正确安装 WeChat Mini Program Builder 插件,并将其添加到 Jenkins 中。

在构建过程中,可以添加额外的步骤,例如测试、发布等。

展示微信小程序二维码

要在 Jenkins 上展示微信小程序的二维码,请按照以下步骤操作:

使用 Jenkins 插件生成 QR Code,并将其作为 JUnit XML 结果的一部分发送到微信小程序中。

使用 Jenkins 插件解析 JUnit XML 文件,并在微信小程序中显示 QR Code。

以下是详细的步骤说明:

生成 QR Code

安装 QR Code Generator 插件,参见官方文档。

使用该插件生成 QR Code,并将其添加到 JUnit XML 文件中。

解析 JUnit XML 文件

安装 Jenkins 的微信小程序插件,如 Jenkins Xcode Integration。

添加一个 Jenkins 步骤,在构建完成后发送 JUnit XML 文件给微信小程序。

在您的 Jenkins 实例中打开一个二维码,指向 JUnit XML 文件。

在微信小程序中打开此二维码,使其解析 JUnit XML 文件。

请注意,在显示 QR Code 之前,您需要先获取微信小程序的凭证。

Java 代码示例,演示如何在 Jenkins 中生成 QR Code:

  1. import com.google.zxing.BarcodeFormat;

  2. import com.google.zxing.EncodeHintType;

  3. import com.google.zxing.WriterException;

  4. import com.google.zxing.client.j2se.MatrixToImageWriter;

  5. import com.google.zxing.common.BitMatrix;

  6. import com.google.zxing.qrcode.QRCodeWriter;

  7. import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

  8. import javax.imageio.ImageIO;

  9. import java.awt.image.BufferedImage;

  10. import java.io.File;

  11. import java.io.IOException;

  12. import java.nio.file.Files;

  13. import java.nio.file.Path;

  14. import java.nio.file.Paths;

  15. import java.util.HashMap;

  16. import java.util.Map;

  17. public class QrCodeGenerator {

  18. public static void main(String[] args) throws WriterException, IOException {

  19. String content = "Hello, World!";

  20. int width = 300; // 二维码宽度

  21. int height = 300; // 二维码高度

  22. QRCodeWriter qrCodeWriter = new QRCodeWriter();

  23. Map hints = new HashMap<>();

  24. hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);

  25. BitMatrix bitMatrix = qrCodeWriter.encode(content, BarcodeFormat.QR_CODE, width, height, hints);

  26. Path file = Paths.get("/tmp/test.png");

  27. MatrixToImageWriter.writeToFile(bitMatrix, "PNG", file.toFile());

  28. System.out.println(file.toString());

  29. }

  30. }

在上述代码中,我们将字符串转换为 QR Code,并将结果保存为 PNG 图片。

在 Jenkins Pipeline 中,您可以使用 Jenkins Pipeline 变量来保存生成的 QR Code 文件路径,并将其作为构建结果的一部分发送给微信小程序。

您可以参考 Jenkins 的微信小程序插件文档以了解更多详细信息。

升级版-Python 

  1. from PIL import Image

  2. from pyqrcode import create as qrcode

  3. def generate_qrcode(image_path):

  4. qr_code_data = 'Hello, World!'

  5. qr_code_image = qrcode.create(qr_code_data)

  6. qr_code_image.save(image_path)

  7. def build_wechat_app():

  8. # 获取参数

  9. APP_ID = input("Enter your APP_ID:")

  10. SECRET_KEY = input("Enter your SECRET_KEY:")

  11. # 清理目录

  12. subprocess.call(['rm', '-rf', 'dist'])

  13. # 构建小程序

  14. subprocess.call(['npm', 'run', 'build'])

  15. # 移动构建目录

  16. subprocess.call(['mv', 'dist', '/var/tmp/build'])

  17. # 初始化微信小程序

  18. subprocess.call(['wechatmp', 'init', APP_ID, SECRET_KEY])

  19. # 生成二维码

  20. generate_qrcode('/tmp/qrcode.png')

  21. if __name__ == '__main__':

  22. build_wechat_app()

在上面的示例中,我们调用 generate_qrcode() 函数,用于生成 QR Code。该函数接受一个图像路径作为参数,并将其保存为 PNG 格式。

注意:为了更好地兼容不同的微信小程序插件,请参阅官方文档以了解如何正确处理图像尺寸和格式。

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关文章:

jenkins构建微信小程序并展示二维码

测试小程序的过程中&#xff0c;很多都是在回头和前端开发说一句&#xff0c;兄弟帮我打一个测试版本的测试码&#xff0c;开发有时间的情况下还好&#xff0c;就直接协助了&#xff0c;但是很多时候他们只修复了其中几个bug&#xff0c;其他需要修复的bug代码正在编写&#xf…...

阿里云大学考试python中级题目及解析-python中级

阿里云大学考试python中级题目及解析 1.WEB开发中&#xff0c;下列选项中能够实现客户端重定向的设置是&#xff08;&#xff09; A.响应头设置Location状态码200 B.响应头设置Location状态码302 C.响应头设置Accept-Location状态码301 D.响应头设置Accept-Location状态码…...

攻防演练作为红方,怎么绕过Web应用防火墙

在攻防演练中&#xff0c;作为红方尝试绕过Web应用防火墙&#xff08;WAF&#xff09;是一项常见且具有挑战性的任务。这要求你对WAF的工作原理有深入的理解&#xff0c;并且能够创造性地应用各种技术来测试WAF的防御限制。以下是一些更专业且可操作的策略&#xff0c;用于尝试…...

AI音乐,8大变现方式——Suno:音乐版的ChatGPT - 第505篇

悟纤之歌 这是利用AI为自己制作的一首歌&#xff0c;如果你也感兴趣&#xff0c;可以花点时间阅读下本篇文章。 ​ 导读 随着新一代AI音乐创作工具Suno V3、Stable audio2.0、天工SkyMusic的发布&#xff0c;大家玩自创音乐歌曲&#xff0c;玩的不亦乐乎。而有创业头脑的朋友…...

【C++】模拟list

list的模拟真的很震撼&#xff0c;第一次学习时给我幼小的心灵留下了极大地冲击 接下来我们一起看看list模拟究竟是怎样一回事 目录 节点的封装&#xff1a;list类的实现&#xff1a;私有成员变量&#xff1a;构造函数&#xff1a;push_back && pop_back: 迭代器类的实…...

SAP项目任务一览表

根据SAP Activate项目管理方法论的主要精神&#xff0c;浓缩到一些主要的团队和任务。 主要的团队有&#xff1a; 项目管理(办公室)Project Management(office)&#xff1a;项目经理团队&#xff0c;包括项目办公室。负责项目整体运行和监控&#xff0c;项目办公室负责项目的…...

130个学术网站和26个科研工具

我们平时可以见到不少学术资源&#xff0c;但是很多信息里会有一些重叠网站、无效网站&#xff0c;导致我们虽然收藏了很多网址&#xff0c;但是却并不都能用&#xff0c;学妹特地整合了130个学术资源网站和26个科研工具&#xff0c;每一个都是亲自试过有效的&#xff0c;希望能…...

《一键搞定!揭秘微信公众号文章批量下载的终极神器》

大家好&#xff01;今天我要给大家介绍一个超级好用的小工具&#xff0c;能帮你轻松批量下载微信公众号的文章&#xff0c;还不需要安装任何证书哦&#xff01;无论你是学生还是普通爱好者&#xff0c;只要你想保存一些精彩的公众号内容&#xff0c;这个工具都能帮到你。 概览 …...

鸿蒙入门02-首次安装和配置

注&#xff1a;还没有安装编辑器&#xff08; deveco studio &#xff09;的小伙伴请看鸿蒙入门01-下载和安装-CSDN博客 首次安装配置 编辑器&#xff08; deveco studio &#xff09;安装完毕以后需要进入配置界面进行相关配置配置完毕以后才可以正常使用 环境配置&#xf…...

软件工程 考研复试常考知识点总结

软件工程 什么是软件工程&#xff0c;这门课讲的什么&#xff1f; 软件工程就是把软件的开发、运行、维护的各个阶段进行系统化和规范化的过程&#xff0c;也就是把工程化的方法运用在软件技术之中&#xff0c;以构建和维护高质量的软件。 进一步&#xff0c;什么是工程化思想…...

Docker+Uwsgi+Nginx部署Django项目保姆式教程

之前&#xff0c;我和大家分享了在docker中使用uwsgi部署django项目的教程。这次&#xff0c;为大家带来的是使用DockerUwsgiNginx部署Django项目。废话不多说&#xff0c;我们开干。 步骤1&#xff1a;使用命令创建一个django项目 我这里python版本使用的是3.9.x 首先&#…...

[openGL] 高级光照-Gamma矫正

目录 一 Gamma是什么? 二 感知光度和物理光度 2.1 与Gamma的关系 2.3 存在问题和弊端? 三 Gamma矫正(逆Gamma) 3.1 Gamma矫正的两种方法 3.2 sRGB空间 3.3 重复校正 3.3.1 在着色器中处理重复校正 3.3.2 在加载纹理时就重复校正 3.3.3 校正前后效果 本章节Qt源码点…...

Prometheus+Grafana监控K8S集群(基于K8S环境部署)

目录 一.环境信息二.部署提前工作三.部署Prometheus监控系统四.部署Node_exporter组件五.部署Kube_state_metrics组件六.部署Grafana可视化平台七.Grafana接入Prometheus数据八.Grafana添加监控模板九.拓展 一.环境信息 1.服务器及k8s版本信息 IP地址主机名称角色版本192.168…...

[opencv]VideoWriter写出fourcc格式

fourcc支持的格式 fourcc全名Four-Character Codes&#xff0c;四字符代码&#xff0c;该编码由四个字符组成 cv2.VideoWriter_fourcc(O,O,O,O) cv2.VideoWriter_fourcc(*OOOO) 通常写法有上述两种形式&#xff0c;O代表一个字符&#xff0c;通常有 支持avi格式的有&#…...

软考中级网络工程师-网络技术

下列命令片段含义是( )。 system-view [HUAWEI] observe-port 1 interface gigabitethernet 0/0/1 [HUAWEI] interface gigabitethernet 0/0/2 [HUAWEI-GigabitEthernet0/0/2] port-mirroring to observe-port 1 inbound A 配置端口镜像 B 配置链路聚合 C 配置逻辑接口 D 配置访…...

cmake基础教程(12)函数和宏用法

参考: https://cmake.org/cmake/help/latest/command/function.html https://cmake.org/cmake/help/latest/command/macro.html#command:macro 文章目录 函数宏在CMake中,宏(macro)和函数(function)命令用于封装重复的任务,这些任务可能分散在你的CMakeLists文件中。一…...

SQLite的PRAGMA 声明(二十三)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLite从出生到现在&#xff08;发布历史记录&#xff09;&#xff08;二十二&#xff09; 下一篇&#xff1a;用于 SQLite 的异步 I/O 模块&#xff08;二十四&#xff09; PRAGMA 语句是特定于 SQLite 的 SQL 扩…...

Qt 实战(1)Qt 概述

一、Qt概述 1、什么是Qt&#xff1f; Qt&#xff08;官方发音 [kju:t]&#xff0c;音同 cute&#xff09;是一个跨平台的 C 开发库&#xff0c;主要用来开发图形用户界面&#xff08;Graphical User Interface&#xff0c;GUI&#xff09;程序&#xff0c;也可以开发不带界面的…...

【练习】二分查找

1、704 &#xff08;1&#xff09;题目描述 &#xff08;2&#xff09;代码实现 package com.hh.practice.leetcode.array.demo_02;public class BinarySearch_704 {public int search(int[] nums, int target) {int i 0,j nums.length -1;while (i < j){int mid (ij) &…...

FactoryTalk View 上位机画面版本升级,还原和备份

FactoryTalk View 上位机画面版本升级,还原和备份 1 归档文件(尾缀.apa)升级2 画面文件(尾缀.sed)升级3 提示“目标工程中包含旧的HMI标签报警,FT View 10.0是最后一个......” 解决方法1 归档文件(尾缀.apa)升级 案例是FTVIEW5.0升级到FT VIEW12,需要用FT VIEW 6过渡升…...

【微信小程序】分包

整个小程序所有分包大小不超过 20M&#xff08;开通虚拟支付后的小游戏不超过30M&#xff09; 单个分包/主包大小不能超过 2M在小程序启动时&#xff0c;默认会下载主包并启动主包内页面&#xff0c;当用户进入分包内某个页面时&#xff0c;客户端会把对应分包下载下来&#xf…...

Golang教程六(单元测试,反射,网络编程,部署)

目录 一、单元测试 单元测试 子测试 TestMain 二、反射 类型判断 通过反射获取值 通过反射修改值 结构体反射 利用tag修改结构体的某些值 调用结构体方法 orm的一个小案例 对反射的一些建议 三、网络编程 socket编程 websocket编程 四、部署 打包命令 交叉编译…...

mybatis进阶篇-执行CRUD操作-typeAliases别名-接口绑定

目录结构 1.创建数据表&#xff08;book&#xff09; # 创建book表 create table book(id int auto_increment primary key,name varchar(255) ,price double ,num int );2.mybatis.xml配置文件 <?xml version"1.0" encoding"UTF-8" ?> <!DOC…...

C#面:泛型的主要约束和次要约束是什么

在 C# 中&#xff0c;泛型的约束是用来限制泛型类型参数的行为和能力的。 主要约束和次要约束是两种不同的约束方式。 主要约束&#xff08;Primary Constraint&#xff09;&#xff1a; 主要约束指定了泛型类型参数必须满足的最基本的条件&#xff0c;它可以是一个类、一个接…...

Java使用documents4j将word和excel转pdf

pom.xml添加documents4j依赖 <!-- documents4j --> <dependency><groupId>com.documents4j</groupId><artifactId>documents4j-local</artifactId><version>1.0.3</version> </dependency> <!-- documents4j 转 wor…...

使用策略模式实现 Spring 分布式和单机限流

我们可以使用策略模式来统一单机限流和分布式限流的实现,提高代码的可扩展性和可维护性。 思路是定义一个 RateLimitStrategy 接口,并分别实现单机限流策略 LocalRateLimitStrategy 和分布式限流策略 DistributedRateLimitStrategy。在 AOP 切面中,根据配置决定使用哪种限流策…...

@CrossOrigin注解解决跨域问题

文章目录 一、什么是跨域二、CrossOrigin注解是干什么用的三、用法 一、什么是跨域 跨域&#xff0c;指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的&#xff0c;是浏览器对JavaScript施加的安全限制。 所谓同源是指&#xff0c;域名&#xff0c;协议&…...

【力扣】45. 跳跃游戏 II

Problem: 45. 跳跃游戏 II 文章目录 问题思路复杂度Code 问题 思路 核心思路&#xff0c;例如nums[i]5&#xff0c;那么最远能跳五步&#xff1b; //那么在这接下来1-5范围内&#xff0c;哪个能让我跳的最远&#xff0c;这个最远指的是 -------------------------------------…...

【Python基础】19.eval函数的使用

eval函数 eval()将字符串转变为有效的表达式来求值并返回对应的结果 基础数据计算 In [1]: eval("1 1") Out[1]: 2字符串重复 In [2]: eval (" * * 10") Out[2]: **********字符串转为列表 In [3]: type(eval("[1,2,3,4,5]")) Out[3]: lis…...

对装饰器模式的理解

目录 一、场景二、面对场景中的新需求&#xff0c;我们怎么办&#xff1f;1、暴力法&#xff1a;直接修改原有的代码。2、子类继承法&#xff1a;既然要增强行为&#xff0c;那我搞一个子类&#xff0c;覆写不就完事了&#xff1f;3、装饰器模式 三、对装饰器模式的思考1、从代…...

网站开发购物店/今天重大新闻国内最新消息

本周张天平学弟在组会上讲了两篇时间序列预测上的最新文章&#xff0c;其中一篇文章用到了 CV 领域非常有意思的一个工作。原文传送门N-BEATS&#xff08;ICLR 2020&#xff09;&#xff1a;Oreshkin, Boris N., et al. "N-BEATS: Neural basis expansion analysis for in…...

山东住房与城乡建设厅网站/如何宣传自己的网站

很多不太懂正则的朋友&#xff0c;在遇到需要用正则校验数据时&#xff0c;往往是在网上去找很久&#xff0c;结果找来的还是不很符合要求。所以我最近把开发中常用的一些正则表达式整理了一下&#xff0c;包括校验数字、字符、一些特殊的需求等等。给自己留个底&#xff0c;也…...

北师大 网页制作与网站建设/seo网站优化培训怎么样

博文原创&#xff0c;转载请声明出处蓝岩--移动互联网老兵在进行tcp和udp的通信测试时候&#xff0c;需要对应的测试脚本作支持&#xff0c;搜集了一些&#xff0c;和大家分享。 echo_tcp_server.h&#xff0c; tcp的echo程序&#xff0c;建立tcp连接后&#xff0c;自己发送什么…...

电子商务网站建设策划方案/寻找外贸客户的网站

1、什么是Doubbo Dubbo是一个分布式服务框架&#xff0c;致力于提供高性能和透明化的RPC远程服务调用方案&#xff0c;以及SOA服务治理方案。简单的说&#xff0c;dubbo就是个服务框架&#xff0c;如果没有分布式的需求&#xff0c;其实是不需要用的&#xff0c;只有在分布式的…...

自动网站建设系统cms/抖音关键词排名软件

欢迎关注微信公众号《生信修炼手册》! circos 主要用于展示染色体上的相关数据&#xff0c;根据在染色上的位置进行不同方式的可视化。所以有一个前提&#xff0c;我们需要基于染色体的位置来看。 在circos中&#xff0c;染色体的位置保存在一个文件当中&#xff0c;通过kary…...

公司网站做一下多少钱/b2b平台都有哪些网站

所以说&#xff0c;这写程序啊&#xff0c;一个月不写就手生。在运行 Java 程序时经常要指定一个包含各种 jar 包的目录作为类路径&#xff0c;以前我们习惯用 -Djava.ext.dirs... 来指定这个 jar 目录。但在新版的 JDK 中&#xff0c;好像是从 JDK 9 开始&#xff0c;当你还用…...