当前位置: 首页 > 工具软件 > Sonic > 使用案例 >

基于Linux + 宝塔 部署 Sonic

赖星驰
2023-12-01

介绍

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平台。

  • 移动设备:就是远程云真机的真机 。

部署流程

以下开始手动部署教程,使用宝塔快速创建坏境。

linux主机

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
  1. sonic前端IP和端口

  2. sonic后端IP和端口

  3. MySQL数据库连接配置

  4. 启动服务

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

 类似资料: