Sonic框架整体部署

3/1/2023 sonic自动化测试

# 介绍

Sonic是一站式开源分布式集群云真机测试平台,致力服务于中小企业的客户端UI测试。近期尝试搭建了下相关的服务试用,整体感觉很不错,这里mark下搭建流程。

sonic官网地址 (opens new window)

# 1.安装Dokcer

推荐在Mac上使用desktop版本,方便可视化的进行管理与使用。

# 2.安装MySQL

# (1)通过doker安装mysql

官方推荐使用的版本为5.7,为了方便集成部署,推荐通过docker进行MySQL的安装。

安装命令:

docker run --name ide-mysql -v /Users/fengbin/Documents/qamysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=XXXXX -p 8888:3306 -d mysql:5.7
1

需要手动修改的几个重要参数

--name:给相应的docker容器起一个名字,方便后续在Docker的desktop管理端查看;

-v:数据库的挂载地址,:前面填写自己本地电脑的一个完整路径,

-e:MYSQL_ROOT_PASSWORD=XXXXX,XXXXX部分替换为自己设置好的密码,后续部署sonic会使用到

-p:端口映射规则,这里配置的是8888:3306,后续部署sonic会使用到端口号

# (2)允许mysql支持远程访问

通过docker ps -a查看启动的mysql容器,对应的容器id,之后输入命令进入容器:

docker exec -it 容器id /bin/bash
1

修改访问的权限:

mysql -p

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'XXXXX' WITH GRANT OPTION;

flush privileges;
1
2
3
4
5

注意,XXXXX需要替换为之前启动mysql容器时,设置的数据库密码

# (3)创建sonic数据库

CREATE DATABASE IF NOT EXISTS sonic
DEFAULT CHARACTER SET utf8;
1
2

输入quit退出mysql的命令行,输入exit退出docker的命令行交互。

# 3.前后端部署

# (1)获取sonic server端最新的安装包

sonic官方的git下载仓库链接页面 (opens new window),下载最新版本的zip包,并解压缩到特定的部署目录下。

# (2)获取本机的ipv4地址

mac机器上,查看获取自己机器的ipv4地址,该字段非常重要,关系到后续的部署是否可以成功

查看ipv4地址

# (3)配置修改.env中的信息(重要)

修改env配置

ip地址相关的配置,一共三处,统一修改为步骤2中获取到的本机ipv4地址。

数据库相关的配置,一共两处,统一修改为启动mysql容器时,设置的数据库端口,以及数据库密码

# (4)通过docker部署服务

在项目的根目录下,执行命令:

docker-compose up -d
1

之后等待前后端部署完成即可,期间可能需要等待3-5分钟。打开浏览器访问 http://localhost:3000 (opens new window),如果可以成功的看到登录注册页面,即说明相关服务部署成功。

# 4.agent端部署

因为sonci本身的架构是分布式的,类似jenkins的master和slave方式。agent可以部署到不同的电脑上作为分布式节点,一个agent最多可以带50个移动设备。

sonic官方提供了docker部署的模式,但是仅Ubuntu可用,笔者这里是mac环境,因此采用的jar方式进行。

# (1) 安装jdk 15版本

已知部分 JDK 出现不兼容的问题,Sonic 官方推荐使用 JDK15,下载链接地址 (opens new window)

部分开发者本地可能并不常用JDK15的环境,推荐参考Mac下安装多个版本的JDK并随意切换 (opens new window)的方式,安装多个jdk版本,并通过命令行的方式随意切换:

jdk15  // 切换到15版本
jdk8   // 切换到8版本
1
2

# (2) 添加安卓SDK设置到系统环境变量

需要安卓SDK设置到系统环境变量,命名为ANDROID_HOME。打开SDKManager,下载platform-tools。确保platform-tools目录存在,adb指令可用。将ANDROID_HOME、ANDROID_HOME/platform-tools添加到系统PATH中。

# (3) 下载agent端jar包

sonic-agent下载页面 (opens new window)下载最新的客户端。

赋予工作目录所有权限,然后确保解压后的 mini、config、plugins 文件夹与 jar 同级

sudo chmod -R 777 xxxxx
1

# (4) 配置agent端

在server平台页面,新增加一个agent端:

新增agent端

修改sonic-agent/config/application-sonic-agent.yml下的配置信息:

修改agent端配置

重要关注项目:

agent端的ipv4地址,获取方式同部署server端时获取ip地址的方式一致

server端的ip与端口号,要与部署server端时的配置一致。

wda-bundle-id:运行ios设备时,需要自己在测试的ios设备上运行一个wda,修改bundleid,保持一致。

修改完成后,执行启动命令:

java -Dfile.encoding=utf-8 -jar sonic-agent-macosx-x86_64.jar
1

如果发现端口并占用,可通过如下命令进行重启:

lsof -ti:7777 | xargs kill -9
1

# 附.参考文献

1. Docker访问宿主机上服务 (opens new window)

2. Mac下安装多个版本的JDK并随意切换 (opens new window)

Last Updated: 11/26/2023, 10:07:02 AM