介绍
sonic是最近很火的开源云真机平台,支持分布式部署,功能也非常丰富,我们需要一套环境远程执行自动化测试,于是,就部署了一套。当然,官方有项目详细的部署文档,本文结合我们自己的情况选择一台Linux主机上完成整个部署。
官网:https://sonic-cloud.gitee.io/#/Home
github: https://github.com/SonicCloudOrg
准备工作
硬件
软件
项目架构介绍:http://testerhome.com/opensource_projects/sonic
sonic前端 -> sonic 后端 -> sonic Agent代理 -> 移动设备
sonic前端:就是访问sonic平台看到的界面。
sonic后端:当然是服务sonic前端的后端服务。
sonic Agent: 这是个代理节点,可以有多个,可以是本机或远程主机,主要是来管理移动设备。Agent通过AgentKey 接入
sonic平台。
移动设备:就是远程云真机的真机
。
以下开始手动部署教程,使用宝塔快速创建坏境。
1、通过ssh登录Linux主机或者其他方式进入linux服务器。
ssh test@192.168.0.2
假设:192.168.0.2是主机ip地址。查询ip地址 ip address
2、安装宝塔面板
宝塔官网地址:https://www.bt.cn/new/download.html
安装完成进入面板安装程度,安装推荐坏境。
安装完成进入mysql添加数据库,数据库名为sonic数据库密码为sonic@123
要把mysql的端口开放,否则注册不了用户
在宝塔面板中软件商店-运行坏境中安装docker管理器
sonic 平台
sonic把服务都制作成了docker-compose.yml
,这大大降低了服务部署的难度。
1、下载sonic-server-simple
,该项目用于启动sonic前后端服务。把内容下载到目录并解压
> wget https://github.com/SonicCloudOrg/sonic-server-simple/archive/refs/tags/v1.3.2-release.tar.gz # 下载
> tar -zxvf v1.3.2-release.tar.gz # 解压
> cd sonic-server-simple-1.3.2-release # 进入目录
> vim docker-compost.yaml # 编辑文件内容
2、编辑docker-compost.yml
服务。
version: '3'
services:
sonic-server-simple:
image: "sonicorg/sonic-server-simple:v1.3.2-release"
environment:
#以下为MySql配置,localhost请替换为自己MySql服务的ipv4地址
- MYSQL_HOST=192.168.0.2 #需要修改
- MYSQL_PORT=3360 #需要修改
- MYSQL_DATABASE=sonic #需要修改
- MYSQL_USERNAME=sonic #需要修改
- MYSQL_PASSWORD=sonic@123 #需要修改
#在服务器部署的话,localhost改为服务器ip,port更改为sonic-server-simple暴露的port(一般不变)
- SONIC_API_HOST=192.168.0.2 #需要修改
- SONIC_API_PORT=8094
- SONIC_NETTY_PORT=8095
#token加密的key值
- SECRET_KEY=sonic
#身份验证token有效天数
- EXPIRE_DAY=14
#前端页面访问地址,不填默认为http://localhost:3000
- CLIENT_HOST=http://localhost:3000
#文件保留天数(指测试过程产生的文件,包括图片、录像等等)
- FILE_KEEP_DAY=60
#测试结果保留天数
- RESULT_KEEP_DAY=60
#以下均为Cron表达式
#清理文件定时任务
- FILE_CRON=0 0 12 * * ?
#清理测试结果定时任务
- RESULT_CRON=0 0 12 * * ?
#发送日报定时任务
- DAY_CRON=0 0 10 * * ?
#发送周报定时任务
- WEEK_CRON=0 0 10 ? * Mon
networks:
- sonic-network
volumes:
- files:/keepFiles/
- files:/imageFiles/
- files:/recordFiles/
- files:/packageFiles/
- files:/logs/
ports:
- "8094:8094"
- "8095:8095"
sonic-client-web:
image: "sonicorg/sonic-client-web:v1.3.2-release"
environment:
#192.168.1.1改为你的ipv4,port更改为sonic-server-simple暴露的port(一般不变)
- SONIC_API_HOST=192.168.0.2 #需要修改
- SONIC_API_PORT=8094
networks:
- sonic-network
ports:
- "3000:80"
volumes:
files:
networks:
sonic-network:
driver: bridge
sonic前端IP和端口
sonic后端IP和端口
MySQL数据库连接配置
启动服务
拉取soncie-server镜像
docker-compose up -d
等待docker拉去镜像启动容器,那么服务就启动起来了。
3、拉取完成后,回到宝塔进入docker管理器-容器列表-把生成的项目状态开启。
4、访问平台
192.168.0.2:3000
注册用户,登录用户,完成部署
1、接入Android设备
Android设备的接入非常简单,安装adb
即可
> sudo apt-get install android-tools-adb # 安装
> adb devices -l # 检测设备
List of devices attached
xxxxx device usb:3-5 product:blueline model:Pixel_3 device:blueline transport_id:1
> yum install java-1.8.0-openjdk-devel # linux安装
> yum install android-tools
> adb devices -l # 检测设备
List of devices attached
xxxxx device usb:3-5 product:blueline model:Pixel_3 device:blueline transport_id:1
如果检测不到,请检查手机是否开启debug调试模式,不同型号的Android手机开启方式有所不同,自行查找
2、接入iOS设备
iOS接入Linux系统会比较复杂一些。
(详细过程看官方部署文档)
官方部署文档:https://sonic-cloud.gitee.io/#/Deploy
3、sib工具
需要说一下的是sib
(sonic-ios-bridge)工具,听说过taobao-iphone-device
吗?sib
和它类似,不过是用go实现的。
https://github.com/SonicCloudOrg/sonic-ios-bridge
SIB 使用方式
> ./sib app list #查看接入的iPhone手机上的App
知乎 com.xxx.xxxx 5
WebDriverAgentRunner-Runner com.facebook.WebDriverAgentRunner.zh.xctrunner 1
注:此处需要特别记下 WebDrvierAgent 的修改之后的签名com.facebook.WebDriverAgentRunner.zh.xctrunner
。
sonic Agent主要是用来管理移动设备的。你可以选择部署到任意主机,并且可以部署多Agent。
1、创建项目& AgentKey
注:此处要特别注意AgentKey
,Agent接入平台就靠这个。
2、部署Sonic-Agent服务
下载 sonic-agent 的 docker-compose.yaml
文件。
wget https://github.com/SonicCloudOrg/sonic-agent/releases/download/v1.3.2-release/docker-compose.yml
修改sonic-agent 的docker-compose.yaml
文件。
# 替换为部署Agent机器的ipv4
- AGENT_HOST=192.168.0.2 # 需要修改
# 替换为Agent服务的端口,可以自行更改
- AGENT_PORT=7777
# 替换为前端新增Agent生成的key
- AGENT_KEY=8bcc3009-42b7-4c4a-9b66-50e480fa55dc # 需要修改
# 这个host改成后端的host
- SERVER_HOST=192.168.0.2 # 需要修改
# 这个port改成后端文件中心的port(一般不变)
- SERVER_FOLDER_PORT=8094
# 这个port改成后端传输中心的port(一般不变)
- SERVER_TRANSPORT_PORT=8095
# 是否使用安卓模块
- ANDROID_ENABLE=true
# 是否开启远程adb调试功能
- USE_ADBKIT=true
# 是否使用iOS模块
- IOS_ENABLE=true
# 替换为你自己使用的wda的bundleId,如果没有.xctrunner后缀会自动补全,建议使用公司的开发者证书
- WDA_BUNDLE_ID=com.facebook.WebDriverAgentRunner.xctrunner.zh # 需要修改
# 是否启用Appium
- APPIUM_ENABLE=true
# 默认为0会自动寻找随机端口启动,如果需要指定appium server端口,请在这里设置
- APPIUM_PORT=0
# 是否启用webview调试功能
- WEBVIEW_ENABLE=true
# 谷歌调试端口,一般不需要修改(默认0使用随机端口,如果需要开启防火墙给外部使用,请设置固定端口如7778)
- CHROME_DRIVER_PORT=0
需要修改的配置,我都备注了需要修改
。主要修改:
AgentKey: 前端平台创建的。
WebDriverAgent: iOS设备 WebDriverAgent修改之后的签名。
拉取soncie-agent镜像
> docker-compose up -d
3、查看日志
启动的sonic-agent很可能检测不到设备。那么就需要进入docker 查看启动日志。
进入soncie-agent 镜像
> docker ps # 查看镜像
60b58ea8da3b registry.cn-hangzhou.aliyuncs.com/sonic-cloud/sonic-agent-linux:v1.3.2-release "/root/jdk-17.0.2/bi…" 2 hours ago Up 2 hours
> docker exec -it 60b58ea8da3b bash # 进入镜像
查看日志
进入docker镜像之后,找到logs 目录查看日志。
root@klooktest: cd logs/
root@klooktest:~/logs# ls
sonic-agent.log
root@klooktest:~/logs# cat sonic-agent.log
如果agent部署失败或无法识别移动设备都可以从日志中查看。
4、使用云真机
前面部署过程一切顺利~!那么就可以登录sonic平台使用设备了。