基于Linux + 宝塔 部署 Sonic

sonic是最近很火的开源云真机平台,支持分布式部署,功能也非常丰富,我们需要一套环境远程执行自动化测试,于是,就部署了一套。当然,官方有项目详细的部署文档,本文结合我们自己的情况选择一台Linux主机上完成整个部署。

官网:https://sonic-cloud.gitee.io/#/Home

github: https://github.com/SonicCloudOrg

准备工作

  • Linux主机:就放我的办公桌旁边的一个机箱,内置ubuntu系统。
  • Android手机:需要开启debug调试模式。
  • iOS手机:需要安装WebDriverAgent。
  • 两条USB数据线:用于将连接Linux主机。
  • 一台macOS电脑:用于给iOS手机安装WebDriverAgent应用。
  • Docker: Linux系统需要有docker。
  • MySQL: Linux需要安装MySQL,当然可以用docker启动。
  • XCode: macOS需要安装Xcode。
  • WebDrirverAgent: iOS需要安装。

Sonic架构

项目架构介绍: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、安装宝塔面板

安装完成进入面板安装程度,安装推荐坏境。

安装完成进入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

拉取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

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平台使用设备了。

原文链接:https://blog.csdn.net/zhuxiongyin/article/details/124457139

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享