1. 禅道介绍
2. 安装禅道
- 2.1. 环境搭建
- 2.2. 安装禅道新版本
- 2.3. 安装12开源版
- 2.4. 安装12企业版
- 安装 PHP 的 LDAP 扩展
- 在线安装云禅道
- 安装 APCu 扩展
- 安装 DuckDB 引擎
3. 升级禅道
- 3.1. 升级12开源版
- 3.2. 升级12企业版
- 3.3. 升级禅道新版本
- 如何安装 ioncube 扩展
4. 维护配置
- 4.1. 维护禅道
- 4.2. 配置禅道
- 4.3. 性能优化
5. 快速入门
- 5.1. 12版本快速入门
- 5.2. 12版创建分组和用户
- 5.3. 12版本最简使用
- 5.4. 12版本基本使用
- 5.5. 12版本进阶使用
- 禅道使用流程图解
- 5.5.2. 个人管理
- 5.5.3. 产品经理篇
- 5.5.4. 项目经理篇
- 5.5.5. 开发团队篇
- 5.5.6. 测试团队篇
- 5.6. 12版本企业版使用
- 5.6.17. 办公管理
- 5.6.18. 工作流
- 视频及 PPT 资料
- 5.7. 新版本快速入门
6. 按照角色使用
7. 功能介绍
- 7.1. 新增概念
- 7.2. 地盘
- 7.3. 项目集
- 7.4. 产品
- 7.5. 项目
- 7.6. 执行
- 7.7. 测试
- 7.8. 自动化测试
- 7.9. DevOps(新平台版)
- 7.10. DevOps(旧版)
- 7.10.1. DevOps 功能
- 7.11. 看板
- 7.12. 资产库(旗舰版)
- 7.13. 文档
- 7.14. BI
- 7.15. AI
- 7.16. 组织
- 7.17. 办公(企业版)
- 7.18. 反馈(企业版)
- 7.19. 学堂(企业版)
- 7.20. 内置工作流(企业版)
- 7.21. 后台设置
- 7.22. 客户端增强版会议
- 7.22.1. 音视频会议配置
- 7.22.2. 发起会议
- 7.22.3. 加入会议
- 预约会议
- 音视频会议应用
8. 其他相关
其他内容
- 关于禅道 IPD 版
- 关于禅道 DevOps 平台版本
- SAFe 介绍
- 关于禅道企业创新能力解决方案
- 禅道企业决策分析解决方案介绍
- 配置使用与常见问题
- 关于 zentaoPHP 框架
- 禅道二次开发简介
- 关于禅道项目管理软件
- 关于禅道企业版
- 关于禅道旗舰版
- 选择适合您的安装方法
- 使用源码包安装(各系统通用)
- Windows 一键安装包(旧版)
- 安装 ioncube 扩展
- 一键安装包如何实现 mysql 异机连接
- 如何安装 ioncube 扩展
- 通过源代码方式升级(通用)
- windows 一键安装包的升级
- linux 一键安装包升级
- 通过源代码方式升级(通用)
- windows 一键安装包的升级
- linux 一键安装包升级
- 升级流程引导
- zentaoPHP 框架命令行机制
- 初始化管理脚本
- 集成版本库、集成 Jenkins,并进行构建
- 主持产品会议
- 禅道开源版使用帮助
- 维护权限
- ZAgent 的使用
- 分解任务
- Git/SVN 版本库管理和查看代码
- 管理应用
- 管理代码库
- 管理流水线
- 管理制品库
- 管理上线计划
- 禅道的目录结构
- 插件
- 在第三方应用中集成禅道
- 其他配置
ZAgent的使用(企业版)
ZAgent是禅道开源的软件自动化测试调度平台,它借助虚拟化技术,为用户提供了一个分布式、集中管理的的测试环境,从而提高测试执行效率,减少测试资产的投入。
随着敏捷、DevOps和CI/CD等研发过程和实践的广泛应用,软件测试、特别是自动化测试,面临着更大的机遇和挑战。自动化测试,作为流水线的构建、部署、验证、发布过程中的一个不可忽视的环节,其能否高效运行,同测试环境的有效管理是密不可分的。借助ZAgent,我们可自动化地、按需创建、用后即焚地管理和使用测试环境。
一、部署KVM宿主机环境
这里使用Ubuntu20.04桌面版来作为宿主机,搭建虚拟化环境。
1. 首先,验证主机是支持虚拟化,有输出表明支持
root@pve:~# egrep -o "(vmx|svm)" /proc/cpuinfo vmx vmx vmx
2. 安装虚拟化软件
sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients libvirt-dev qemu virt-manager bridge-utils sudo service libvirtd restart
老的Ubuntu系统,请用以下命令替换。注意libvirt-daemon-system、libvirt-clients换成libvirt-bin。
sudo apt-get install qemu-kvm libvirt-bin qemu virt-manager bridge-utils sudo service libvirt-bin restart
3. 下载系统和驱动
· 从 这里下载微软Win10官方光盘镜像;
· 在 这里下载虚机I/O设备驱动,我选择的是稳定版virtio-win-0.1.185.iso。
4. 打开虚拟机管理工具
在图形界面中打开终端,输入virt-manager,启动虚拟机管理工具;
图中显示的QEMU/KVM表明,已成功连接到本地服务;
如果状态为断开,请双击尝试连接,若显示不能连接到libvirtd服务,可重启机器修复;
· 您也可以通过点击菜单“文件->添加连接”,来连接和管理远程宿主机上的虚拟机,格式形如qemu+ssh://user@192.168.0.56:22/system?socket=/var/run/libvirt/libvirt-sock。
· 点击菜单“文件->新建虚拟机”,打开虚拟机创建向导;
· 选择前面下载的Win10镜像文件作为本地安装介质;
· 网络设置页面,选择“主机设备”也就是宿主机的网卡,这样虚拟机会作为局域网中的一台电脑而存在;
· 按向导完成其他设置,并保存。
· 双击打开虚拟机窗口,点击”查看->详情“,进入虚拟机属性页面;
· 点击引导选项卡,设置系统从光盘启动;
· 点击左下角”添加硬件”,增加一个光盘,指向下载的virtio驱动;
· 启动后,自动从光盘安装系统;
· Windows安装向导中,选择加载驱动程序;
· 选择virtio驱动CDROM里,NetKVM目录下对应系统的文件;
· 完成后续的安装步骤。
· 安装完成后,再次打开虚拟机窗口;
· 进入CDROM选项卡,删除安装光盘;
· 启动虚拟机,更新系统,并安装测试相关软件;
· 完成后续的安装步骤。
二、安装KVM虚拟机
首先,我们来了解一下KVM虚拟机有关的几个概念和工具。
· kvm:基于内核的虚拟机(引擎)
· qemu:用于模拟虚拟机IO设备
· qemu-img:虚拟机磁盘管理工具
· libvirt:虚拟化服务的API接口
· virsh:基于libvirt实现的命令行工具
· qemu-manager:图形化管理工具
新建KVM虚拟机时,可以指定另一磁盘文件作为 BackingFile。BackingFile是一个只读的虚拟磁盘基础映像,可以在多个虚拟机间进行共享。基于BackingFile创建和运行虚拟机时,只会在自己的磁盘文件中增量地写入文件,从而提高效率、节省磁盘和维护成本。
虚拟机快照保存了虚拟机在某个指定时间点的状态,当我们在自动化测试过程中遭遇问题或错误时,可以利用快照保存、并恢复到执行中的某个时间点。借助BackingFile机制,虚拟机支持形如以下的多层依赖的快照链(<--表示依赖的方向)。
base image <-- vm01 <-- snap 1 <-- snap 2 <-- vm02(active)
可使用以下命令,将处于快照链中的某个虚机,导出形成一个独立的磁盘映像文件,其不再依赖其它映像。
qemu-img convert -O qcow2 vm02.qcow2 vm-templ.img
假设我们在用户的工作目录中,建立了以下目录。
kvm 根目录 iso 存放光盘镜像 base 存放基础磁盘镜像BackingFile share 存放共享磁盘镜像,用户存储测试工具、驱动等 image 存放测试机的磁盘镜像 xml 存放导出的虚拟机XML配置文件
1. 下面用一个例子,给大家介绍下快速创建测试虚拟机的方法。
· 按照上面的步骤,创建一个Win10虚拟机;
· 在虚拟机中,安装好Chrome浏览器和测试相关软件;
· 使用以下命令,新建一个用于保存工具的共享磁盘;
qemu-img create -f qcow2 -o cluster_size=2M kvm/share/tools.qcow2 10G
· 挂载共享磁盘到虚拟机,复制工具和文件到该共享磁盘;
· 移除该虚拟机,注意在确认对话框中,请选择“不删除相关磁盘文件”;
· 移动虚机主磁盘文件到基础镜像目录,如kvm/base/windows/win10。
· 执行以下命令,以上述基础镜像作为BackingFile,创建新的虚拟机磁盘;
qemu-img create -f qcow2 -o cluster_size=2M,backing_file=kvm/base/windows/win10/pro-x64-zh_cn.qcow2 kvm/image/test-win10-pro-x64-zh_cn-01.qcow2 50G
· 打开qemu-manager,新建测试虚拟机,挂在新创建的虚拟机磁盘和共享磁盘。
2. 除了使用图形界面的qemu-manager外,这里也提供一种命令行的方法,可用于代码中。
· 导出虚拟机XML配置文件;
virsh dumpxml test-win10-pro-x64-zh_cn > kvm/xml/test-win10-pro-x64-zh_cn.xml
· 修改XML配置文件中的以下字段:
name
uuid
vcpu
memory和currentMemory
mac address
第1块disk的source file
· 在第1块disk的Element中,加入以下BackingFile有关的内容:
<backingStore type="file" index="2"> <format type="qcow2"/> <source file="/home/aaron/kvm/base/windows/win10/pro-x64-zh_cn.qcow2"/> <backingStore/>
· 如需要用页面VNC访问虚拟机桌面,找到XML的graphics元素,修改成以下内容;
<graphics type="vnc" port="-1" autoport="yes" listen="0.0.0.0" passwd="P2ssw0rd"> <listen type="address" address="0.0.0.0"/> </graphics>
· 使用以下命令定义虚拟机;
virsh define kvm /xml/test-win10-pro-x64-zh_cn.xml
· 使用以下命令启动虚拟机;
virsh start test-win10-pro-x64-zh_cn
· 使用以下命令获取虚拟机的VNC端口编号,在VNC软件中使用”5900+该数字“的端口,访问虚拟机远程桌面;
virsh vncdisplay test-win10-pro-x64-zh_cn
2. 最后,我们介绍推荐的第三种方法,在代码中使用libvirt*接口来管理虚拟机。禅道基于GO语言的实现,请见这里 。
# 查看虚拟机信息qemu-img info --backing-chain kvm/image/test-win10-pro-x64-zh_cn-01.qcow2 # 修改虚拟机磁盘大小qemu-img resize x64-pro-zh_cn.qcow2 +10G # 查看虚拟机里列表virsh list --all # 查看虚拟机VNC端口virsh vncdisplay win10-test # 导出虚拟机XML配置文件virsh dumpxml win10-test > win10-test.xml # 创建虚拟机磁盘镜像qemu-img create -f qcow2 -o cluster_size=2M,backing_file=base.qcow2 win10-test.qcow2 40G # 转换虚拟机镜像qemu-img convert -O qcow2 vm02.qcow2 vm-templ.img # 定义、取消定义,启动、停止虚拟机virsh define win10-test.xmlvirsh start win10-testvirsh destroy win10-testvirsh undefine win10-test
三、部署远程桌面代理
在宿主机上,完成以下步骤。
1. 执行以下命令,克隆代理项目的代码到kvm目录下;
git clone https://github.com/novnc/websockify.git ~/kvm/websockify
2. 在websockify同级目录,新建token文件夹;
3. 在token文件夹中,新建如下格式的配置文件;
vm01: 192.168.1.215:5904
vm01:用于访问虚拟机的token; 192.168.1.215:宿主机的IP地址; 5901:虚拟机的VNC端口号。
注:由于QEMU/KVM虚拟机的VNC服务端口是自增的,在ZAgent启动宿主机代理时,我们使用代码来自动创建10个token文件,完成端口5901-5910到token的映射,并使用一个Map缓存起来。当宿主机代理收到创建虚拟机的请求时,可根据VNC的端口返回其对应的token。具体代码实现可参考这里。
4. kvm下使用virt-manager,修改虚拟机远程桌面的类型为VNC Server,地址(Address)为所有接口(All interface),端口为自动(Auto);
5. 执行以下命令,启动websockify服务。6080为代理端口,../token/为端口转发配置文件所在的目录;
~/kvm/websockify/run --token-plugin TokenFile --token-source ~/kvm/token/ 6080
四、部署noVNC服务
1. 执行以下命令,获取远程桌面项目的代码;
https://github.com/novnc/noVNC.git
2. 将项目中的文件拷贝到Web服务器中,或使用以下步骤安装一个静态服务器;
- 从这里下载并安装node.js环境;
- 执行npm install -g light-server安装服务器;
- 执行light-server -s noVNC启动noVNC服务,默认端口为4000。
五、访问远程桌面
1. 在工作电脑上,用浏览器打开http://<宿主机IP地址>:4000/vnc.html;
2. 填入以下信息:
主机:宿主机IP地址;
端口:websockify代理的端口号;
路径:websockify?token=vm01,其中vm01为上述token配置文件中的第一列。
3. 点击网页中的连接按钮,打开虚拟机vm01的远程桌面;
4. 另外,您也可使用简化版的vnc_lite.html页面来访问桌面。
http://<宿主机IP地址>:4000/vnc_lite.html?host=192.168.1.215&port=6080&path=websockify/?token=vm01
六、部署ZAgent应用服务
1. 从这里下载ZAgent应用,程序分为3个部分,分别为:
- 服务端程序 zagent-server
- 宿主机代理 zagent-host
- 虚拟机代理 zagent-vm
2. 复制zagent-server到服务器,执行;
./zagent-server
3. 复制zagent-host到宿主机,执行;
./zagent-host -t host -s http://服务器IP:服务器端口 -i 本机IP -p 本机端口
4. 启动前面安装的Win10虚拟机,在用户根目录下创建kvm文件夹,得到形如c:\Users\aaron\kvm的目录;
5. 复制zagent-vm文件到c:\Users\aaron\kvm\agent目录;
6. 复制以下内容,保存为c:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\zagent.bat。Windows StartUp目录下的zagent-vm代理程序,在系统启动时会被自动运行。
@echo on :start ping /n 3 114.114.114.114 | findstr "TTL=" && goto next || goto start :next cmd /k "cd /d c:\Users\aaron\kvm\agent && zagent-vm -t vm -s 服务器IP:服务器端口" pause
以上批处理文件通过ping 114.114.114.114命令,等待虚拟机网络就绪,然后运行zagent-vm程序。
7. 对于Linux的虚拟机,请使用以下Shell脚本启动ZAgent虚拟机代理。
#!/bin/sh export PATH=$PATH:$GOROOT/bin:$GOPATH/bin serverAdr="114.114.114.114" ping -c 1 $serverAdr > /dev/null 2>&1 while [ $? -ne 0 ]; do echo -e "\e[1A\e[K $(date): Connecting - ${serverAdr}" sleep 1 ping -c 1 $serverAdr > /dev/null 2>&1 done echo "$(date): Connected - ${serverAdr}"; cd /home/aaron/dev/project/zagent git fetch --all && git reset --hard origin/main && git pull go get all # nohup go run cmd/agent-vm/main.go -t vm > zagent.log 2>&1 go run cmd/agent-vm/main.go -t vm
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论