基于Docker构建CI/CD工具链(八)用nginx收集测试报告

当前,我们已经介绍了如何使用 Apifox 和 JMeter 进行测试,尽管控制台已经输出了测试结果,但在实际工作中,我们通常需要更详细的测试报告。

测试报告在测试过程中已经生成,只需将其托管起来以便查阅。如果你有现成的 CMS 系统,将这些报告发布到 CMS 系统中是一个不错的选择。今天,我们将使用 Nginx 搭建一个静态资源服务器,并将测试报告推送到该服务器上,然后通过浏览器访问测试报告。

运行nginx

我们依旧通过Docker的方式运行nginx,当然你可以根据自己需要手动构建自己的镜像。

  1. 创建映射目录

我们在宿主机创建静态资源目录,映射到ngixn容器内/usr/share/nginx/html

mkdir -p /home/copier/cicd
  1. 创建nginx的配置文件
    在刚才的目录下创建nginx.conf文件,后续会把该文件映射为nginx的/etc/nginx/conf.d/default.conf文件。
server {listen 80;server_name localhost;location / {root /usr/share/nginx/html;autoindex on;}
}
  • root /usr/share/nginx/html; 指定了要列出文件的根目录路径。
  • autoindex on; 启用了自动索引功能,这允许浏览器显示目录中的文件列表。
  1. 启动nginx容器

nginx容器启动非常简单,使用如下命令就可,启动后通过"http://xx.xx.xx.xx:8080"便可以访问。

docker run --name nginx -p 8080:80 \-v /home/copier/cicd:/usr/share/nginx/html:ro \-v /home/copier/cicd/nginx.conf:/etc/nginx/conf.d/default.conf:ro \-d nginx

请添加图片描述

修改测试用例的脚本

修改上篇文章提到的test.sh,其内容如下,注意修改的密码。

#!/bin/bash
# 获取当前目录路径,用于后续挂载到 Docker 容器中
APP_ROOT=$(pwd)
mkdir -p report/${CI_JOB_ID}/
Host_Password="你的密码"# 通过CI_JOB_ID 把所有的报告关联起来,所有报告放在静态资源服务器同一级目录
APIFOX_REPORT="/app/report/${CI_JOB_ID}/apifox"
JMETER_REPORT="/app/report/${CI_JOB_ID}/jmeter"
# 使用 Docker 容器运行 APIFox 测试
docker run --rm \-v /home/copier/.m2/:/root/.m2/ \-v $APP_ROOT:/app \-w /app \docker.mvcode.cn:8083/apifox:1.0.0 apifox run -k \--out-dir ${APIFOX_REPORT} --out-file apitest -r html,cli \--env-var "serverURL=http://192.168.3.52:9999" \./testcases/usertest.apifox-cli# 新增满足测试需求的数据
docker run --rm \
docker.mvcode.cn:8083/devtools:1.0.0 \
curl -X POST -H "Content-Type: application/json" \-d '{"name": "John", "age": 30}' \http://192.168.3.52:9999/users# 使用 Docker 容器运行 JMeter 测试
docker run --rm -v ${APP_ROOT}:/app -w /app \docker.mvcode.cn:8083/jmeter:5.6.3 jmeter \-n -j ${JMETER_REPORT}/test_jmeter.log \-l ${JMETER_REPORT}/replort_jmeter.log \-o ${JMETER_REPORT} \-JServerHost=192.168.3.52 \-JServerPort=9999 \-JThreadCount=20 \-JThreadCount=5 \-t ./testcases/jmeter.jmx -e -f# 打包测试报告
tar -czf report.tar.gz -C ./report ${CI_JOB_ID}# 将测试报告传输到远程服务器
docker run --rm  -v $APP_ROOT:/app \-w /app \docker.mvcode.cn:8083/devtools:1.0.0 \sshpass -p $Host_Password scp -o StrictHostKeyChecking=no \./report.tar.gz  copier@192.168.3.52:/home/copier/cicd/# 解压并删除远程服务器上的测试报告
docker run --rm  -v $APP_ROOT:/app \-w /app \docker.mvcode.cn:8083/devtools:1.0.0 \sshpass -p $Host_Password  ssh -o StrictHostKeyChecking=no  \copier@192.168.3.52 \"tar -xzf /home/copier/cicd/report.tar.gz -C /home/copier/cicd/ && rm -f /home/copier/cicd/report.tar.gz"# 输出测试报告地址
echo "测试报告地址如下: http://192.168.3.52:8080/${CI_JOB_ID}/"

运行CI/CD JOB

测试JOB完成后可以看到,输出结果。
请添加图片描述

访问提示的中地址,nginx可以把目录列举出来
请添加图片描述

查看 Apifox报告
请添加图片描述

查看Jmeter报告
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/814307.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++11 设计模式4. 抽象工厂(Abstract Factory)模式

问题的提出 从前面我们已经使用了工厂方法模式 解决了一些问题。 现在 策划又提出了新的需求:对于各个怪物,在不同的场景下,怪物的面板数值会发生变化, //怪物分类:亡灵类,元素类,机械类 …

MATLAB 自定义实现点云法向量和曲率计算(详细解读)(64)

MATLAB 自定义实现点云法向量和曲率计算(详细解读)(64) 一、算法介绍二、算法步骤三、算法实现1.代码 (完整,注释清晰,可直接用)2.结果一、算法介绍 首先说明: ------这里代码手动实现,不调用matlab提供的法向量计算接口,更有助于大家了解法向量和曲率的计算方法,…

docker部署Prometheus+AlertManager实现邮件告警

文章目录 一、环境准备1、硬件准备(虚拟机)2、关闭防火墙,selinux3、所有主机安装docker 二、配置Prometheus1、docker启动Prometheus 三、添加监控节点1、docker启动node-exporter 四、Prometheus配置node-exporter1、修改prometheus.yml配置…

【网站项目】摄影竞赛小程序

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

刷题之动态规划-回文串

前言 大家好,我是jiantaoyab,开始刷动态规划的回文串类型相关的题目 动态规划5个步骤 状态表示 :dp数组中每一个下标对应值的含义是什么>dp[i]表示什么状态转移方程: dp[i] 等于什么1 和 2 是动态规划的核心步骤,…

某次众测的加解密对抗

前言 起源于某次众测中,遇到请求包响应包全密文的情况,最终实现burp中加解密。 用到的工具有 sekiro(rpc转发)flask(autodecoder自定义接口)autodecoder(burp插件转发) debug部分…

ClickHouse--18--argMin() 和argMax()函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 argMin() 和argMax()函数业务场景使用案例1.准备表和数据:业务场景一:查看salary 最高和最小的user业务场景二:根据更新时间获取…

【fastapi】搭建第一个fastapi后端项目

本篇文章介绍一下fastapi后端项目的搭建。其实没有什么好说的,按照官方教程来即可:https://fastapi.tiangolo.com/zh/ 安装依赖 这也是我觉得python项目的槽点之一。所有依赖都安装在本地,一旦在别人电脑上编写项目就又要安装一遍。很扯淡。…

最优算法100例之45-不用循环乘法求1-n的和

专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句。不能用循…

【opencv】示例-neural_network.cpp 使用机器学习模块创建并训练一个简单的多层感知机(神经网络)模型...

#include <opencv2/ml/ml.hpp> // 引入OpenCV的机器学习模块using namespace std; // 使用标准命名空间 using namespace cv; // 使用OpenCV命名空间 using namespace cv::ml; // 使用OpenCV机器学习命名空间int main() {//创建随机训练数据Mat_<float> data(100, …

字符和字符串操作函数总结

索引 一 . 字符操作函数1. 字符分类函数2. 字符转换函数 二 . 字符串操作函数长度不受限制的字符串操作函数1. strcpy函数的使用和模拟实现2. strcat函数的使用和模拟实现3. strcmp函数的使用和模拟实现 长度受限制的字符串操作函数1. strncpy函数的使用2. strncat函数的使用3.…

RT-Thread 启动流程源码详解

RT-Thread 启动流程 一般了解一份代码大多从启动部分开始,同样这里也采用这种方式,先寻找启动的源头。RT-Thread 支持多种平台和多种编译器,而 rtthread_startup() 函数是 RT-Thread 规定的统一启动入口。一般执行顺 序是:系统先从启动文件开始运行,然后进入 RT-Thread 的…

vi编辑器

目录 一、文本编辑器vi命令 1.作用&#xff1a; 2.vi和vim 二、vi编辑器的三种模式 三、输入模式 四、命令模式 五、末行模式 一、文本编辑器vi命令 1.作用&#xff1a; 创建或修改文本文件 维护Linux系统中的各种配置文件 2.vi和vim vi:类UNIX操作系统的默认文本编辑器…

标准更新丨美国发布玩具安全标准ASTM F963-23

2023年10月13日&#xff0c;美国材料试验协会 (ASTM)发布了玩具安全标准ASTM F963-23。新版标准主要修订了声响、电池可触及性、膨胀材料和弹射玩具的技术要求&#xff0c;另外&#xff0c;澄清和调整了邻苯二甲酸酯、玩具基材重金属的豁免以及溯源标签的要求&#xff0c;使其保…

基于Python的豆瓣电影、豆瓣电影评分可视化、豆瓣电影评分预测系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

从零开始写一个RTSP服务器(一)RTSP协议讲解

目录 前言一、什么是RTSP协议&#xff1f;二、RTSP协议详解2.1 RTSP数据格式2.2 RTSP请求的常用方法2.3 RTSP交互过程2.4 sdp格式 三、RTP协议3.1 RTP包格式3.2 RTP OVER TCP 四、RTCP 前言 为什么要写这个系列&#xff1f; 因为我自己在学习rtsp协议想自己从零写一个rtsp服务…

【opencv】示例-npr_demo.cpp 非真实感渲染:边缘保留平滑、细节增强、铅笔素描/彩色铅笔绘图和风格化处理...

Edge Preserve Smoothing- Using Normalized convolution Filter Edge Preserve Smoothing-Using Recursive Filter Detail Enhancement Pencil sketch/Color Pencil Drawing Stylization /* * npr_demo.cpp * * 作者: * Siddharth Kherada <siddharthkherada27[at]gmail[do…

JavaScript代码挑战

让我们回到朱莉娅和凯特关于狗的研究。这次&#xff0c;他们想把狗的年龄转换成人的年龄&#xff0c;并计算出研究中狗的平均年龄。 创建一个函数 “calcAverageHumanAge”&#xff0c;该函数接受一个狗的年龄数组&#xff08;‘age’&#xff09;&#xff0c;并按顺序执行以下…

KDTree索引(K近邻搜索,半径R内近邻搜索)——PCL

K近邻搜索&#xff08;K Nearest Neighbors&#xff09; K近邻搜索是一种基于点数量的搜索方法&#xff0c;它会找到指定点附近最接近的K个邻居点。K近邻搜索中的K值是一个参数&#xff0c;您需要指定要搜索的邻居数量。该方法适用于需要查找固定数量邻居点的情况&#xff0c;…

Redis队列与Stream

Redis队列与Stream、Redis 6多线程详解 Redis队列与StreamStream总述常用操作命令生产端消费端单消费者消费组消息消费 Redis队列几种实现的总结基于List的 LPUSHBRPOP 的实现基于Sorted-Set的实现PUB/SUB&#xff0c;订阅/发布模式基于Stream类型的实现与Java的集成消息队列问…