前言
F2etest 是一个面向前端, 测试, 产品等岗位的多浏览器兼容性测试整体解决方案, 优势是:
10 倍以上硬件利用率, 降低企业运营成本;
提供非常棒的桌面用户体验, 极大的提高测试效率;
浏览器云提供真实浏览器环境, 还原真实测试场景;
webDriver 云快速稳定的支撑自动化测试脚本运行.
现状
仓库地址: https://github.com/alibaba/f2etest
用户需自行搭建 F2etest, 没有线上的云测平台供用户直接使用;
平台搭建成本非常大, 耗时耗力, 需要同时了解 Windows 运维和 Linux 运维;
安装手册无法满足用户实际的需求.
系统架构
详细系统架构及实现原理请参考《F2etest 系统架构及实现原理》 https://www.yuque.com/artist/f2etest/architecture .
方案
旨在降低用户搭建成本, 期望用户可以在 1 个小时内完成 F2etest 最小版本的搭建.
目前采用的方案是:
Linux 上各个服务通过 Docker 打在一个镜像里, 用户通过拉取镜像直接部署.
Windows 的基础配置做成一个镜像, 阿里云用户可以通过镜像市场获取 (进行中).
用户根据自己机器的实际网络情况, 修改对应的 IP 地址则可以直接体验最小版本的 F2etest.
Linux Docker 化
完整版 Dockerfile 源文件:
Guacamole Server
C 应用, 我们习惯叫它 guacd, 用于与 Windows Server 进行通信, RDP 协议.
- FROM CentOS
- ### Guacamole Server ###
- # 更多详细安装信息可参考 Guacamole 官方 <https://guacamole.apache.org/doc/gug/installing-guacamole.html>
- # 拷贝定制过的 guacamole-server 并解压
- ADD f2etest-guacamole/guacamole-server-0.9.3.tar.gz /home/guacdshare
- WORKDIR /home/guacdshare
- # 安装需要使用到的依赖包
- RUN yum install -y wget gcc initscripts sudo lsof automake autoconf libtool make \
- # 安装 `guacd` 依赖
- cairo-devel libpng-devel uuid-devel freerdp* libvncserver-devel openssl-devel \
- # 编译前创建 `freerdp` 的软连接
- && ln -s /usr/local/lib/freerdp/guacsnd.so /usr/lib64/freerdp/ \
- && ln -s /usr/local/lib/freerdp/guacdr.so /usr/lib64/freerdp/
- WORKDIR /home/guacdshare/guacamole-server-0.9.3
- # 运行配置脚本并将 `guacd` 添加到 `/etc/init.d` 目录
- RUN ./configure --with-init-dir=/etc/init.d \
- # 编译
- && make \
- # 安装构建的组件
- && make install \
- # 更新已安装库的缓存
- && ldconfig \
- # 设置运行时自动启动
- && chkconfig --add guacd \
- && chkconfig guacd on
- Guacamole Client
Tomcat 应用, 我们习惯叫它 guacamole, 主要与 guacamole server 进行通信, HTTP 协议.
- WORKDIR /root
- ## JAVA ##
- # 下载 JDK 1.8
- RUN wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http://www.oracle.com/; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz" \
- && mkdir /usr/java
- WORKDIR /usr/java
- # 拷贝并解压 JDK
- RUN cp /root/jdk-8u141-Linux-x64.tar.gz ./ \
- && tar xzf jdk-8u141-Linux-x64.tar.gz
- # 设置 JAVA 运行环境
- ENV JAVA_HOME /usr/java/jdk1.8.0_141
- ENV PATH $JAVA_HOME/bin;$PATH
- ENV CLASSPATH .:$JAVA_HOME/lib
- ## TOMCAT ##
- WORKDIR /usr/local
- # 下载并解压 Tomcat
- RUN wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.38/bin/apache-tomcat-8.5.38.tar.gz \
- && tar -xzvf apache-tomcat-8.5.38.tar.gz \
- && mv apache-tomcat-8.5.38 tomcat8
- # 拷贝定制过的 WAR 包
- COPY f2etest-guacamole/guacamole-0.9.3.war /usr/local/tomcat8/webapps/guacamole.war
- # 拷贝 guacamole 配置文件和免登配置文件
- COPY f2etest-docker/guacamole.properties /etc/guacamole/
- COPY f2etest-docker/noauth-config.xml /etc/guacamole/
- # 拷贝 Tomcat 服务脚本到 `/etc/init.d` 目录
- COPY f2etest-docker/tomcat8 /etc/init.d/
- WORKDIR /etc/init.d
- # 增加 Tomcat 服务让其运行时自动启动
- RUN chmod 755 tomcat8 \
- && chkconfig --add tomcat8 \
- && chkconfig --level 234 tomcat8 on \
- && mkdir /root/.guacamole \
- && ln -s /etc/guacamole/guacamole.properties /root/.guacamole
- F2etest-Web
Node 应用, 用户操作的入口站点, 可访问指定版本的浏览器.
- ## Node Env ##
- WORKDIR /usr/local
- # 下载 node v10 并解压
- RUN wget https://nodejs.org/dist/v10.15.1/node-v10.15.1-linux-x64.tar.xz \
- && xz -d node-v10.15.1-Linux-x64.tar.xz \
- && tar -xf node-v10.15.1-Linux-x64.tar \
- && mv node-v10.15.1-Linux-x64 node \
- # 给 `node`, `npm` 命令创建软连接
- && ln -s /usr/local/node/bin/node /usr/bin/node \
- && ln -s /usr/local/node/bin/NPM /usr/bin/NPM \
- # 安装 pm2 [node 应用进程管理器]
- && NPM i -g pm2 \
- # 给 `pm2` 命令创建软连接
- && ln -s /usr/local/node/bin/pm2 /usr/bin/pm2
- ## MySQL ##
- # 下载安装 MySQL
- RUN wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm \
- && yum localinstall -y MySQL-community-release-el7-5.noarch.rpm \
- && yum install -y MySQL-community-server
- ## Nginx ##
- # 拷贝 nginx 源配置
- COPY f2etest-docker/nginx.repo /etc/yum.repos.d/
- # yum 安装 nginx
- RUN yum-config-manager --enable nginx-mainline \
- && yum install -y nginx
- COPY f2etest-docker/nginx.conf /etc/nginx/
- # 拷贝 Web 应用程序
- COPY f2etest-Web /home/f2etest-Web
- WORKDIR /home/f2etest-Web/
- # 安装 node 依赖包
- RUN NPM i
- # 拷贝初始化脚本 (初始化数据库表,`pm2` 启动 Web, 启动 Nginx)
- COPY f2etest-docker/setup.sh ./
- EXPOSE 80
- # 指定容器启动程序 (以防出现权限不足情况)
- ENTRYPOINT ["/usr/sbin/init"]
部署指南
- # 获取 `f2etest-web` 镜像
- docker pull registry.cn-hangzhou.aliyuncs.com/f2etest/f2etest-Web
- # 启动容器
- # 映射本地端口, 这里已 80 为例, 请确保此端口未被占用
- # 如果 80 被占用, 请修改为其它可用端口, 例如 8080 端口:-p 8080:80
- docker run -dit --privileged -p 80:80 --name f2etest registry.cn-hangzhou.aliyuncs.com/f2etest/f2etest-Web
详细部署指南请参考《F2etest-Web 部署》
联系
如果你对 F2etest 有任何意见建议, 欢迎勾搭. 答疑请入群咨询:
来源: https://yq.aliyun.com/articles/701486