第6.4节 Agent部署和管理
Agent部署
·
移动端精准测试Agent,其实就是完成一定功能的服务,在java微服务开发模式下,完全可以使用微服务去做。但是存在以下几个问题:
一,java数据处理复杂,使用java处理数据文件比较复杂,如果使用python相对来说就简单多了。
二,服务器环境要求,iOS的相关操作必须使用MAC机器,如果使用微服务开发,容器部署的话,很多命令无法执行。
为了解决上面两个问题,现在将精准测试Agent采用Python开发的单独服务来实现,通完http接口响应精准测试的相关操作。
6.4.1 Android Agent部署
Android Agent使用linux上的命令,就可以完成相关操作。所以可以部署到容器上,使用docker部署方式。
1,dockerfile
项目为Python Flask框架,部署dockerfile的内容如下:
# 基础镜像
FROM python:3.6
# 更新 kcsize
RUN curl -o /update_build.sh http://*****/private_clouds/7330/update_build.sh && sh /update_build.sh && rm -f /update_build.sh
# 复制启动脚本并授予可执行权限
COPY ./run.sh /run.sh
RUN chmod +x /run.sh
# 将代码添加到qa目录下
COPY . /accuratemobileagent
# 设置工作目录
WORKDIR /accuratemobileagent
#下载安装Node 2023-12-01
RUN wget https://nodejs.org/dist/v13.11.0/node-v13.11.0-linux-x64.tar.xz
RUN tar -xvf node-v13.11.0-linux-x64.tar.xz
RUN ln -s /accuratemobileagent/node-v13.11.0-linux-x64/bin/node /usr/local/bin/node
RUN ln -s /accuratemobileagent/node-v13.11.0-linux-x64/bin/npm /usr/local/bin/npm
RUN npm i nyc@17.0.0 --registry=https://npm.corp.kuaishou.com
RUN ln -s /accuratemobileagent/node_modules/nyc/bin/nyc.js /usr/local/bin/nyc
# 安装Python依赖
RUN pip3 install --no-cache-dir -r requirements.txt -i https://pypi.corp.kuaishou.com/kuaishou/prod
#安装unzip
RUN yum -y install zip unzip
# 启动 kcsize
CMD ["/usr/local/bin/kcsize", "api"]
2,启动命令脚本
内容如下:
#!/usr/bin/env bash
set -e
PORT=$(grep 'AUTO_PORT0' /home/web_server/PORT_INFO.json | cut -c 14-18)
CORE=$(echo $KCS_CPU_CORE_NUM | cut -d'.' -f1)
let FCORE=$CORE/2-1
#PORT=8080
IP=$(hostname -i)
echo "$IP:$PORT" | tr -d '\n' > host.txt
gunicorn -w ${FCORE} -b :"${PORT}" server:app
利用公司容器管理平台进行部署。
6.4.2 iOS Agent部署
iOS项目比较特殊需要使用xcode开发环境和命令,还有一些Mac的命令,所以iOS Agent采用的是python Django框架开发的,直接在MAC电脑上运行。
1,先安装python3环境和依赖
python需要3.9以上版本即可:
项目需要的依赖:
aiohttp==3.8.1 Django==3.2.8 gitlab==1.0.2 python_gitlab==2.10.1 wget==3.2
如果有其他的包,可以灵活安装。
2,项目启动脚本
项目可以使用如下shell脚本启动:
ipadr=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
echo $ipadr
#python3 manage.py runserver $ipadr:8080
python3 manage.py runserver localhost:8080
6.4.3 项目管理
项目代码通过git进行管理的,当开发或是修改的功能,提交代码。Android Agent走公司流水线进行代码部署,iOS Agent则需要人工下载代码,然后再启动项目即可。
当然公司如果有项目管理和部署平台,通过异地管理方案接管MAC服务器的话,iOS Agent也可以实现自动部署。为了增加服务的有效性,Android可以启动多个实例,进行任务分发管理等。
更多推荐
所有评论(0)