云测服务 Tcloud 远程真机 iOS+Android 搭建记

环境撘一半就放弃 · November 04, 2019 · Last by 黑山老妖 replied at November 13, 2019 · 665 hits

为什么搭建Tcloud

首先想声明,本人比较菜,可能文章中有很多错误之处,请大家指出错误。
本人在去年年初就搭建过stf,并且做出过一定的二次开发,以下两篇文章是本人发表。
https://testerhome.com/topics/14330
https://testerhome.com/topics/14654
但是stf对我们公司而言,最大痛点在于不能支持苹果远程真机,因为只有同时支持苹果和安卓两款系统的远程真机,才能满足项目组的使用需求,9月我看到Tcloud开源出来,并且界面上支持了iOS真机,这燃起来我一丝对iOS远程真机支持的希望!并且Tcloud平台还做到了测试系统里需要做到 的很多功能!
花了3天就把Tcloud安装好了,我在这里只提供一些安装思路,避免大家踩坑!
云测的TesterHome介绍链接:
https://testerhome.com/topics/20491

搭建前准备

首先是搭建Tcloud的前后端,我用的是虚拟服务器,系统版本是:Linux version 3.10.0-862.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) ) #1 SMP Fri Apr 20 16:44:24 UTC 2018,作者并不建议在windows上搭建,因为似乎没有人成功过。

搭建后端

首先我们要在服务器上搭建后端,下面是github的链接:
https://github.com/bigbaser/TcloudServer
然后问题来了,在一个不起眼的地方,有一个docker部署Tcloud的文章,当你真的要搭建Tcloud的时候,请点击该文章。
https://github.com/bigbaser/TcloudServer/blob/master/deploy/docs/Docker%E9%83%A8%E7%BD%B2.md
当你经过一波三折又骨折的搭建,你终于可以在9001端口上可以访问konga了,我的地址是:http://172.20.71.211:9001/#
(这是内网地址你无法访问,需要替换为你的IP地址)


这里要注意kong.json这个文件的导入,我是进去QQ群问群主要了这个文件才导入成功的,自带的文件似乎有问题。搭建konga成功并不代表你成功搭建了Tcloud,你还需要按照指示创建数据库,当然首先你得能够在3306端口访问到数据库,然后再 去执行脚本去创建,这需要你本地拥有连接mysql数据库的软件,本人使用的是mysql官方提供的workBranch,免费下载安装使用的。

另外,下面链接是我写的,关于Tcloud云真机的命令,因为启动镜像这些操作都需要敲命令,不熟悉的同学可能会一脸懵逼:
https://testerhome.com/topics/20975

搭建前端

前端使用的是npm技术,如果你对nodejs不熟悉,那么搭建起来可能会十分痛苦。因为本人即便已经搭建过N多nodejs程序,比如appium、stf等等,在搭建Tcloud前端还是会遇到种种问题。在这里,给大家最简单直接的帮助,我使用的nodejs版本是:v8.16.2,使用的npm版本是6.4.1,请大家最好和我一样使用相同的版本!

如果遇到权限不足问题

在命令后面加 --unsafe-perm 这是通用的解决方案
本人成功搭建后,就可以进入到Tcloud平台了,地址是:http://172.20.71.211:8080/#/login
注意,启动起来需要一定的时间,官网提供的命令并不能持久化的部署,因为一旦你连服务器的客户端断开,服务端也就断开了,所以需要使用特殊的命令,在Tcloud-server目录下执行一个命令才能持久启动:npm run dev >> log.log 2>&1 & ,本人目前也是遇到过一阵子服务就挂掉的情况,有解决办法的同学请告知一声。
当你搭建完成2个平台的时候,这时候,Tcloud平台就基本成型了,里面的很多功能可以开始使用,比如测试中心里的项目,项目里有需求,缺陷,用例,接口测试用例等功能,还有一些小工具。

真机

但是,真正的远程真机才是本平台的亮点,没有远程真机,根本称不上“云测”平台,所以我们首先就得考虑搭建“云测”服务,首先我们要弄清楚一点,Tcloud并没有自带的云测功能,它基本是调用stf的API做,所以搭建stf才是下一步的重点,搭建不起来,你前面的努力也就都白费了。本人先是用ubuntu14.04搭建,后来用16.04,因为种种原因,比如依赖包过期,都一一失败了,最后群里的同学给了我希望,使用centOS7,所以首先,我们得去网上下载centOS7的镜像,另外stf需要安装在实体机上,我是把一台windows PC机格式化后安装的,而且使用了Rufus软件,把一个U盘进行格式化之后,把镜像导入进去,才能够安装到电脑里。如果你使用的虚拟机来搭建也是可以的!
总之,要成功搭建stf首先有关键要素,一个是centOS7作为stf服务器,一个是mac电脑和一台iphone, mac系统上一定要有xcode10.1版本,xcode10.1可以先百度一下,怎么下载,因为文件有6GB那么大,而且如果你是通过U盘拷贝文件,你的U盘需要使用MAC系统的格式化工具,格式到特定的格式,才能从windows上把下载好的xcode文件拷过去,为此我把我的U盘给弄的彻底挂了,哀悼一下我用了4年的U盘。

stf服务器 ,android真机搭建

stf服务器搭建的最关键要素就是cent7OS,然后就按照传统的教程,下载nodejs,npm,然后执行npm install stf来进行安装。

stf接入到Tcloud

stf接入到Tcloud在很多帖子中都没有提及。首先要访问Tcloud的数据库,访问config表,修改ID 6、8、9的三行的content的值(如下图)

我的值的范例如下:
{"URL":"http://172.21.40.146:7100/api/v1/devices,headers:{Authorization:Bearer" 6766e8ad5d0e4150aef881283158cd0ce175093695f845718ad474b7f6bbf47a"}}
上面的值,请修改正确的IP地址,修改正确的授权值,授权 的密钥在STF里如下图的地方生成。

最关键的就是这些字符串容不下任何的错误,本人在这里卡了一天,就是因为少了一个空格!

另外,我们需要去修改前端文件的值:
vim /work/Tcloud-master/config/prod.env.js
添加一行:STF_URL:'"http://172.21.40.146:7100"'

下面是iOS本地启动的命令。
stf local --public-ip 172.21.40.146 --allow-remote

iOS环境搭建

iOS最好先在iOS搭建好stf,再把本地的stf作为一个iOS provider接入到stf中,命令是:
stf local --wda-path /Users/lxm/work/WebDriverAgent --wda-port 8100 --public-ip 172.21.40.43

iOS远程真机接入

远程真机的命令真的是搞死人,因为帖子上并没有很清楚的写命令,花了我3天时间调试命令,弄的我怀疑人生,本人找到了作者,才最终写对命令,使得Mac真机对接上了linux服务器。因为要正确的对接,linux服务器和mac的iOS provider的命令都一定要一个字不差的写对,下面就是我两台服务器的启动命令,也是这篇文章最精华所在:
Linux服务器命令:
stf local --public-ip 172.21.40.146 --allow-remote --bind-dev-pub tcp://172.21.40.146:7114 --bind-dev-pull tcp://172.21.40.146:7116 --bind-dev-dealer tcp://172.21.40.146:7115 --wda-port 8100 --storage-port 7102
iOS provider命令:
stf ios-provider --name "mac081" --connect-sub tcp://172.21.40.146:7114 --connect-push tcp://172.21.40.146:7116 --storage-url http://172.21.40.146:7102 --public-ip 172.21.40.43 --heartbeat-interval 20000 —wda-path /Users/lxm/work/WebDriverAgent --wda-port 8100

搭建完成

搭建完成之后,在Tcloud里的云真机就能够正常使用了。

后记

搭建完成,可能你的云测旅途只是刚刚开始!接下来,我们就要去熟悉代码,还有打通Tcloud平台的其他任督二脉。前面我遇到的很多问题,其实通过查看代码就可以完成,但是我已经指出来我所遇到的大部分问题,所以,你不了解代码,完成整个搭建也不是不可能!
Tcloud交流群839084842,欢迎大家一起加入讨论关于Tcloud

共收到 4 条回复 时间 点赞

npm run dev只是开发调试模式
线上部署使用npm run build,会新建dist目录,把文件打好包,访问目录下的index.html即可
npm run XXX具体操作是在package.json中的脚本定义,比如:

"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev",
"build": "node build/build.js",
"test": "node build/build-test.js"
},
grizz 回复

嗯,谢谢作者来搭救~我也是第一次接触这个框架

代表Tcloud来给你点赞,棒棒的~

xcode10.1搭建stf有问题吧,要用更低的版本,楼主没遇到吗

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up