centos docker部署openstf
一、简介
OpenSTF(Smartphone Test Farm)是一个web端移动设备管理平台,可以从浏览器端远程调试、远程管理设备。其实有点类似于我们现在很火热的云测平台,如:testin、百度MTC等等。并且这个项目在Github上开源:https://github.com/openstf/stf 遵循Apache License 2.0开源协议。很多公司内部团队现在都开始通过STF建设自己的平台。
二、docker部署stf
1、依赖
- Node.js 8.x required (some dependencies don't support newer versions)
- ADB properly set up
- RethinkDB >= 2.2
- GraphicsMagick (for resizing screenshots)
- ZeroMQ libraries installed
- Protocol Buffers libraries installed
- yasm installed (for compiling embedded libjpeg-turbo)
- pkg-config so that Node.js can find the libraries
2、拉取docker镜像
$ docker pull openstf/stf:latest # STF镜像
$ docker pull sorccu/adb:latest # adb 镜像
$ docker pull rethinkdb:latest # rethinkdb 镜像
$ docker pull openstf/ambassador:latest # ambassador 镜像
3、运行docker容器
- 启动数据库
docker run -d --name rethinkdb -v /srv/rethinkdb:/data --net host rethinkdb rethinkdb --bind all --cache-size 8192 --http-port 8090
- 启动adb service
docker 启动的时候增加参数--privileged ,开启特权,可以设置容器里的内核参数
docker run -d --name adbd --privileged -v /dev/bus/usb:/dev/bus/usb --net host sorccu/adb:latest
- 启动stf
docker run -d --name stf --net host openstf/stf stf local --public-ip 192.168.31.55 --allow-remote
一定要注意启动顺序,STF 依赖 rethinkdb,所以要先启动 rethinkdb,启动完成后使用: docker ps -a 查看是否启动成功
4、访问stf管理页面
http://192.168.31.55:7100/#!/devices
三、连接设备
1、adb架构
2、adb host 方式连 windows 上的设备
- windows设备端(192.168.31.5)
首先保证其他电脑可以和安装STF 的系统通信,在未安装STF 的电脑上暴露adb端口,建议采用默认端口:5037,adb 如果是1.0.32版本以下的,使用如下命令:
adb -a -P 5037 fork-server server
若adb在1.0.32以上的,如adb 1.0.39版本下,使用如下命名:
adb nodaemon server -a -P 5037
Linux 上启动adb server并对外暴露5037端口
adb -a -P 5037 fork-server server
另行,打开一个命令窗口,然后添加设备
adb connect 127.0.0.1:62001
监听的5037,也已经提示连接设备
- stf服务器端(192.168.31.55)
当不知道命令如何写的时候,从上面运行STF服务里查找日志里面有provider的一行,可以比照出内容怎么写。
[root@localhost ~]# docker logs -f stf
进入stf服务器
[root@localhost ~]# docker exec -it stf /bin/bash
远程windows主机,执行下述命令【其中--adb-host 127.0.0.1可换成实际(windows主机)--adb-host 192.168.31.43】
stf provider --name localhost.localdomain --min-port 7400 --max-port 7700 --connect-sub tcp://127.0.0.1:7114 --connect-push tcp://127.0.0.1:7116 --group-timeout 900 --public-ip 192.168.31.55 --storage-url http://localhost:7100/ --adb-host 192.168.31.43 --adb-port 5037 --vnc-initial-size 600x800 --mute-master never --allow-remote
本地主机,执行下述命令【其中--adb-host 127.0.0.1可换成实际(windows主机)--adb-host 192.168.31.30】
stf provider --name localhost.localdomain --min-port 7400 --max-port 7700 --connect-sub tcp://127.0.0.1:7114 --connect-push tcp://127.0.0.1:7116 --group-timeout 900 --public-ip 192.168.31.55 --storage-url http://localhost:7100/ --adb-host 192.168.31.30 --adb-port 5037 --vnc-initial-size 600x800 --mute-master never --allow-remote
stf服务器,显示连接成功
四、存在问题
1、关闭linux防火墙
关闭linux防火墙,避免socket连接错误,或者stf显示设备画面异常。centos命令如下:
- 查看防火墙状态: 绿的running表示防火墙开启
systemctl status firewalld.service
- 执行关闭命令:
systemctl stop firewalld.service
- 再次执行查看防火墙命令:
systemctl status firewalld.service
- 执行开机禁用防火墙自启命令 :
systemctl disable firewalld.service
2、could not install
找到占用的端口并将程序杀掉
netstat -ano | findstr 5037
杀掉后,再重新查看端口是否被占用,然后重新执行命令
adb nodaemon server -a -P 5037
五、参考
1、shell:https://blog.csdn.net/FloatDreamed/article/details/103809814
2、更改运行adb服务器的默认端口:http://www.cocoachina.com/articles/52086
3、adb命令大全:https://www.jianshu.com/p/3bacaeab06b2
4、官方:https://github.com/openstf/stf
5、部署脚本:https://github.com/thinkhy/deploy-stf-docker/blob/master/deploy_stf.sh
6、STF 使用系列心得:https://testerhome.com/topics/6112
7、STF 集成 iOS 之 开源了:https://testerhome.com/topics/19548