先搭建好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訪問即可