大数跨境

虚拟机Jenkins Docker测试部署实操

虚拟机Jenkins Docker测试部署实操 51Testing软件测试网
2026-10-12
7
导读:VMWare+Docker+Jenkins自动化测试部署:SSH连接、定时错峰、报告归档、问题排查

一. 引言

在自动化测试部署工作调试中,基于虚拟机安装Linux系统,新建Docker容器、安装Jenkins,可实现测试任务自动化执行、测试报告自动生成与展示。

本文完整梳理主机连接虚拟机、定时任务配置、测试报告展示及常见问题排查,为实操提供参考。

二. 主机连接虚拟机

本次安装的是常用的虚机VMWare,Linux系统为Kylin Ubuntu V10。

主机想要访问虚机中Docker容器,需提前排查防火墙、网络模式、SSH服务。

1.1 SSH服务部署

⚠️ 注意

Kylin系统必须优先更新软件源,否则会出现安装失败问题。

完整安装、启动、自启命令如下:

Terminal — bash
# 更新软件源
$ sudo apt update -y
 
# 安装SSH服务端
$ sudo apt install openssh-server -y
 
# 启动SSH服务
$ sudo systemctl start ssh
 
# 设置SSH开机自启
$ sudo systemctl enable ssh
 
# 检查SSH服务运行状态
$ sudo systemctl status ssh

1.2 SSH连接步骤

1. 安装服务:
安装命令
sudo apt update -y && sudo apt install openssh-server -y
2. 启停配置:
启动并设置自启
sudo systemctl start ssh && sudo systemctl enable ssh

完成启动与开机自启设置。

3. 修改配置:编辑配置文件 sudo vi /etc/ssh/sshd_config,确保配置项 PasswordAuthentication yes,开启密码登录权限。
4. 重启服务:
重启服务使配置生效
sudo systemctl restart ssh
5. 远程连接:物理主机ping通虚拟机IP后,通过MobaXterm工具,输入虚拟机IP、用户名、密码即可完成连接。

二、Jenkins测试脚本定时任务优化配置

在Jenkins中配置定时执行测试脚本时,不合理的定时设置会造成服务器资源占用过高,需合理选择设置,均衡服务器负载。

2.1 定时表达式(0 H * * D-D)

例如 0 11 * * 1-5,该表达式含义为 每周一至周五,上午11:00整精准执行任务。

若多个任务均采用此配置,所有任务会在同一时间触发,极易导致Jenkins服务器CPU、内存瞬间占用飙升,出现任务排队、执行超时等问题,不利于服务器稳定运行。

2.2 优化定时表达式(H 11 * * D-D)

例如 H 11 * * 1-5,该表达式含义为 每周一至周五,11:00-11:59之间随机分钟执行任务。

Jenkins会根据任务名称进行哈希计算,为不同任务分配固定的执行时间,实现任务错峰执行,均匀分摊服务器负载。

2.3 配置建议

✅ 日常自动化测试任务配置中,可优先选用类似 H 11 * * 1-5 表达式,避免任务集中触发带来的服务器卡顿问题,这在我们公司的项目中已经这样运用了。

三、Jenkins测试报告展示配置法

为实现测试报告在Jenkins平台可视化展示,提供两种配置方法,第一种直接配置归档路径,第二种通过代码优化+配置修改可稳定生成并归档报告。

3.1 方案一:直接配置Jenkins构建

3.1.1 配置流程

在Jenkins构建后操作(post-build Actions)中添加归档组件(Archive the artifacts),手动填写测试报告路径,操作前需确认Docker容器挂载映射路径:

查看Docker Jenkins容器挂载映射关系
$ docker inspect pytest | grep -E "Source|Destination" -A 1

进入容器并查看工作空间
# 进入pytest容器
$ docker exec -it pytest /bin/bash
 
# 跳转至任务工作空间
$ cd /jenkins-home/workspace/JCTEST/
 
# 退出容器
$ exit

3.1.2 配置结果

手动填写固定路径归档时,易出错,如遇到系统提示无匹配文件如下:

❌ 构建失败日志
Archiving artifacts
 
'/code-server/branch/test_api/testreport/*.html' doesn't match anything:
'' exists but not '/code-server/atpct/branch/test_api/testreport/*.html'
 
ERROR: Step 'Archive the artifacts' failed: No artifacts found that match
the file pattern. Configuration error?
 
Finished: FAILURE

分析了出错原因,是由于测试报告生成路径不固定,手动填写静态路径无法精准匹配动态生成的报告文件,导致归档失败。

3.2 方案二:代码优化+Jenkins配置

3.2.1 代码修改

在 runtest.py 文件中添加代码,动态获取Jenkins工作空间路径,自动创建报告存储目录,适配动态生成的测试报告:

runtest.py — Python
import os
import os.path
 
# 动态获取Jenkins工作空间路径
workspace = os.getenv("WORKSPACE", "./")
report_dir = os.path.join(workspace, "testreport", GLOBAL_CURRENT)
report_file = os.path.join(report_dir, "testreport.html")

3.2.2 容器验证文件

代码修改完成后,执行构建任务,进入容器查看报告目录与文件:

进入容器验证报告文件
# 进入容器空间
$ docker exec -it pytest /bin/bash
 
# 查看报告文件夹是否创建成功
$ ls /jenkins-home/workspace/JCTEST/testreport/
 
# 查看具体报告文件
$ ls /jenkins-home/workspace/JCTEST/testreport/20260121023825/

3.2.3 Jenkins归档配置

修改归档匹配路径,采用通配符适配动态目录,填写路径:testreport/*/testreport.html

✅ 配置后构建任务执行成功,可正常查看报告。

四、实操问题及解决办法

4.1 问题一:主机无法ping通虚拟机

4.1.1 问题

VMWare网络配置、端口转发规则缺失,导致主机与虚拟机无法通信。

4.1.2 解决

1. 查看NAT网络配置:打开VMWare,点击顶部"编辑"→"虚拟网络编辑器",选择VMnet8(NAT模式),进入NAT设置,记录网关IP,作为主机和虚拟机通信桥梁;
2. 配置端口转发规则:在NAT设置界面点击添加,自定义未占用主机端口(如2222),填写虚拟机IP、虚拟机SSH端口(22),保存配置;
3. 修改连接方式:打开MobaXterm,远程主机填写 127.0.0.1,端口填写配置的主机端口(2222),输入虚拟机用户名密码,即可完成连接。

4.2 问题二:主机无法访问容器镜像地址

4.2.1 问题

系统防火墙iptables规则限制,阻断了主机与容器镜像的访问通路。

4.2.2 解决

清空防火墙规则、放行所有访问权限,并关闭开机自启:

清空iptables防火墙规则
$ sudo iptables -F && sudo iptables -X && sudo iptables -P INPUT ACCEPT && sudo iptables -P FORWARD ACCEPT && sudo iptables -P OUTPUT ACCEPT

五、总结

本次基于VMWare、Docker、Jenkins,完成远程连接Kylin Ubuntu、Jenkins定时任务、自动化测试报告展示实操。
在平时维护中,需关注SSH服务配置,Jenkins任务要避免任务集中执行,测试报告展示可通过代码动态适配路径,为自动化测试平台调试运行稳定提供保障~

——END——

声明:本文为51Testing软件测试网 枫叶 用户投稿内容,该用户投稿时已经承诺独立承担涉及知识产权的相关法律责任,并且已经向51Testing承诺此文并无抄袭内容。发布本文的用途仅仅为学习交流,不做任何商用,未经授权请勿转载,否则作者和51Testing有权追究责任。如果您发现本公众号中有涉嫌抄袭的内容,欢迎发送邮件至:editor@51testing.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。


【声明】内容源于网络
0
0
51Testing软件测试网
博为峰51Testing软件测试网提供各种线上招聘、线上课程等网络服务,出版软件测试系列丛书及电子杂志,组织线上技术交流活动;同时还举办多种线下公益活动,如软件测试沙龙、软件测试专场招聘会等。
内容 3964
粉丝 0
51Testing软件测试网 博为峰51Testing软件测试网提供各种线上招聘、线上课程等网络服务,出版软件测试系列丛书及电子杂志,组织线上技术交流活动;同时还举办多种线下公益活动,如软件测试沙龙、软件测试专场招聘会等。
总阅读4.5k
粉丝0
内容4.0k