OpenSTF手机设备管理平台-------二次开发

先搭建好STF平台,正常启动了,再进行二次开发,因为二开编译和启动都依赖于相关都插件,这样也预防了在问题发生时,排查插件的问题。

下载STF源码

进入stf文件目录:

下载源码全依赖

bower是npm下的一种browserjs的包管理工具 。

  • npm install -g bower
  • bower -v

检索stf源码,安装依赖插件:bower install --save git://github.com/openstf/stf.git --allow-root

代码修改

我是在idea修改好了代码,通过Xftp传输代码的

代码编译

安装编译插件gulp,它是为二次开发编译stf用的

  • 先执行下npm install
  • npm install gulp -g
  • npm install gulp-cli -g

编译前,清除build文件gulp clean

报错1:

解决方案:npm install [email protected] --ignore-script

报错2:

解决方案:npm install yams

编译源文件:gulp webpack:build

确保stf目录下存在gulpfile.jswebpack.config.js文件,执行编译的时候发生以下错误,则是缺少了依赖。

以上報錯解決方案:

bower install --save git://github.com/openstf/stf.git --allow-root

最后编译重启即可。



如以docker的方式启动,那么就要把编译后的文件,进行docker镜像打包,然后启动访问。

(1)构建镜像

先在服务器看下是否可以编译成功,然后看看启动是否正常,检测没有问题之后,再打包镜像。避免重新打包镜像。

(2)打包镜像

编译好的STF源码后,基础STF本身的Dockerfile文件进行调整,分成两部分构建,这样使得构建的速度快些。

Dockerfile-base构建语句:

docker build -f Dockerfile-base -t ubuntustfbase . --no-cache --network=host

Dockerfile构建语句:

docker build -f Dockerfile -t second/openstf/stf . --no-cache --network=host

(3)启动stf

sudo docker run -it --name stf -d --net host second/openstf/stf stf local --public-ip 服务器IP --no-cleanup

查看日志:

docker logs -f -t --since="2019-11-12" --tail=100 stf

进入容器目录:

sudo docker exec -ti -u root  stf  bash

(4)检测设备StfService是否running(一般可忽略)

看下设备是否断开,如果断开需要手动启动stfService插件, 一般无意外,都是正常running,重构镜像不会影响设备端。

adb -s 设备id shell am start -n jp.co.cyberagent.stf/.IdentityActivity

adb -s 设备id shell am startservice -n jp.co.cyberagent.stf/.Service

 

镜像文件讲解

Dockerfile-base文件内容讲解:

 

下载nodejs, 后面使用npm需要用到

下载Stf环境依赖,官方dockerfile文件用以下语句执行:

apt-get -y install libzmq3-dev libprotobuf-dev git graphicsmagick yasm && \

这个很坑,搞了两三天,一直是提示连不上rethinkdb, 后来直接一个一个安装才好,如图所示

上图安装的libzmq, 在自制构建的dockerfile文件中,会报错以下问题。

可能是版本的问题,这个原因不得知。

所以要在dockerfile文件中,重新安装npm install zmq

继续安装STF依赖的环境graphicsmagick yams pkg-config。

curl ne-tools iputils-ping 是自主安装的,方便在容器目录里面测试IP和接口是否可以ping.

这个镜像构建好,基本不要动它了,作为基础镜像,构建速度太慢了。

如果有源码修改,则重新构建dockerfile文件就可以了。

 

Dockerfile文件内容讲解:

 

由于 npm 5 使用了新的包管理模式,所以清缓存,要加上--force

镜像打包成功后,启动STF访问即可