先搭建好STF平台,正常启动了,再进行二次开发,因为二开编译和启动都依赖于相关都插件,这样也预防了在问题发生时,排查插件的问题。
下载STF源码
进入stf文件目录:
- cd /usr/local/node/node-v8.14.0-linux-x64/lib/node_modules/stf/
- git clone https://github.com/openstf/stf.git(官方源码)
下载源码全依赖
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.js和webpack.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访问即可