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

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

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

运行nginx

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

  1. 创建映射目录

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

bash 复制代码
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"便可以访问。

bash 复制代码
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,其内容如下,注意修改的密码。

bash 复制代码
#!/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报告

相关推荐
大G哥几秒前
记一次K8S 环境应用nginx stable-alpine 解析内部域名失败排查思路
运维·nginx·云原生·容器·kubernetes
妍妍的宝贝16 分钟前
k8s 中微服务之 MetailLB 搭配 ingress-nginx 实现七层负载
nginx·微服务·kubernetes
大道归简1 小时前
Docker 命令从入门到入门:从 Windows 到容器的完美类比
windows·docker·容器
zeruns8021 小时前
如何搭建自己的域名邮箱服务器?Poste.io邮箱服务器搭建教程,Linux+Docker搭建邮件服务器的教程
linux·运维·服务器·docker·网站
爱跑步的程序员~1 小时前
Docker
docker·容器
疯狂的大狗2 小时前
docker进入正在运行的容器,exit后的比较
运维·docker·容器
长天一色2 小时前
【Docker从入门到进阶】01.介绍 & 02.基础使用
运维·docker·容器
伊玛目的门徒2 小时前
docker 搭建minimalist-web-notepad
运维·docker·notepad
叶北辰CHINA3 小时前
nginx反向代理,负载均衡,HTTP配置简述(说人话)
linux·运维·nginx·http·云原生·https·负载均衡
theo.wu5 小时前
使用Buildpacks构建Docker镜像
运维·docker·容器