开发环境搭建

1 项目结构

  1. .
  2. ├── Jenkinsfile # 构建JAR包使用的 jenkinsfile
  3. ├── LICENSE
  4. ├── OWNERS
  5. ├── README.md # 项目中文介绍
  6. ├── README-EN.md # 项目英文介绍
  7. ├── SECURITY.md # 安全说明
  8. ├── CODE_OF_CONDUCT.md
  9. ├── CONTRIBUTING.md
  10. ├── build.md # 构建过程
  11. ├──framework
  12. ├── eureka # 服务注册中心
  13. ├── gateway # API 网关
  14. ├── sdk-parent # SDK
  15. ├── .gitignore
  16. └── pom # 主框架的 pom 文件
  17. ├──test-track # 测试跟踪模块
  18. ├── backend # 后端代码目录
  19. ├── frontend # 前端代码目录
  20. ├── Dockerfile # 构建容器镜像使用的 dockerfile
  21. └── pom # 测试跟踪模块使用的 pom 文件
  22. ├── api-test # 接口测试模块
  23. ├── backend # 后端代码目录
  24. ├── frontend # 前端代码目录
  25. ├── Dockerfile # 构建容器镜像使用的 dockerfile
  26. └── pom # 接口测试模块使用的 pom 文件
  27. ├── performance-test # 性能测试模块
  28. ├── backend # 后端代码目录
  29. ├── frontend # 前端代码目录
  30. ├── Dockerfile # 构建容器镜像使用的 dockerfile
  31. └── pom # 性能测试模块使用的 pom 文件
  32. ├── report-stat # 报表统计模块
  33. ├── backend # 后端代码目录
  34. ├── frontend # 前端代码目录
  35. ├── Dockerfile # 构建容器镜像使用的 dockerfile
  36. └── pom # 报表统计模块使用的 pom 文件
  37. ├── project-management # 项目管理模块
  38. ├── backend # 后端代码目录
  39. ├── frontend # 前端代码目录
  40. ├── Dockerfile # 构建容器镜像使用的 dockerfile
  41. └── pom # 项目管理模块使用的 pom 文件
  42. ├── system-setting # 系统设置模块
  43. ├── backend # 后端代码目录
  44. ├── frontend # 前端代码目录
  45. ├── Dockerfile # 构建容器镜像使用的 dockerfile
  46. └── pom # 系统设置模块使用的 pom 文件
  47. ├── .gitignore
  48. ├── .gitmodules
  49. └── pom.xml # 整体 maven 项目使用的 pom 文件

2 配置开发环境

2.1 拉取代码

需要拉取 metersphere, ms-jmeter-corejmeter-plugins-webdriver三个服务代码,并切换到同一分支。

2.2 后端

在启动 MeterSphere 服务之前要先启动 Mysql、Redis、Kafka、Minio 等服务。
MeterSphere 后端使用了 Java 语言的 Spring Cloud 框架,并使用 Maven 作为项目管理工具。开发者需要先在开发环境中安装 JDK 1.11 及 Maven。

  • 初始化配置
    (1)数据库初始化
    MeterSphere 使用 MySQL 数据库 v8 版本。同时 MeterSphere 对数据库部分配置项有要求,请参考下附的数据库配置,修改开发环境中的数据库配置文件。
  1. [mysqld]
  2. datadir=/var/lib/mysql
  3. default-storage-engine=INNODB
  4. character_set_server=utf8mb4
  5. lower_case_table_names=1
  6. performance_schema=off
  7. table_open_cache=128
  8. transaction_isolation=READ-COMMITTED
  9. max_connections=1000
  10. max_connect_errors=6000
  11. max_allowed_packet=64M
  12. innodb_file_per_table=1
  13. innodb_buffer_pool_size=512M
  14. innodb_flush_method=O_DIRECT
  15. innodb_lock_wait_timeout=1800
  16. server-id=1
  17. log-bin=mysql-bin
  18. expire_logs_days = 2
  19. binlog_format=mixed
  20. character-set-client-handshake = FALSE
  21. character-set-server=utf8mb4
  22. collation-server=utf8mb4_general_ci
  23. init_connect='SET default_collation_for_utf8mb4=utf8mb4_general_ci'
  24. sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
  25. skip-name-resolve
  26. [mysql]
  27. default-character-set=utf8mb4
  28. [mysql.server]
  29. default-character-set=utf8mb4

请参考文档中的建库语句创建 MeterSphere 使用的数据库,MeterSphere 服务启动时会自动在配置的库中创建所需的表结构及初始化数据。

  1. CREATE DATABASE metersphere_dev /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci *//*!80016 DEFAULT ENCRYPTION='N'*/;

(2)MeterSphere 配置文件
MeterSphere 会默认加载该路径下的配置文件 /opt/metersphere/conf/metersphere.properties,请参考下列配置创建对应目录及配置文件。

  1. # eureka 配置
  2. eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
  3. # 数据库配置
  4. spring.datasource.url=jdbc:mysql://localhost:3306/metersphere_dev?autoReconnect=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false
  5. spring.datasource.username=root
  6. spring.datasource.password=Calong@2015
  7. # kafka 配置,node-controller 以及 data-streaming 服务需要使用 kafka 进行测试结果的收集和处理
  8. kafka.partitions=1
  9. kafka.replicas=1
  10. kafka.topic=JMETER_METRICS
  11. kafka.test.topic=JMETER_TESTS
  12. kafka.bootstrap-servers=127.0.0.1:9092
  13. kafka.log.topic=JMETER_LOGS
  14. kafka.report.topic=JMETER_REPORT
  15. # node-controller 所使用的 jmeter 镜像版本
  16. jmeter.image=registry.cn-qingdao.aliyuncs.com/metersphere/jmeter-master:5.5-ms2-jdk11
  17. # TCP Mock 端口范围
  18. tcp.mock.port=10000-10010
  19. # Redis 配置
  20. spring.redis.host=localhost
  21. spring.session.store-type=redis
  22. spring.redis.port=6379
  23. spring.redis.password=Password123@redis
  24. # 启动模式,lcoal 表示以本地开发模式启动
  25. run.mode=local
  26. # minio 配置
  27. minio.endpoint=http://localhost:9000
  28. minio.accessKey=minioadmin
  29. minio.secretKey=minioadmin
  30. ## CAS
  31. #cas.client.name=MS_SERVER
  32. ## CAS SERVER URL
  33. #cas.server.url=http://xxx/cas
  34. ## METERSPHERE SERVER URL
  35. #cas.client.url=http://IP:8081

(3)项目打包
启动 MeterSphere 需要 jmeter 依赖,因此在启动之前需要将 ms-jmeter-core 和 jmeter-plugins-webdriver 打包

  1. mvn clean install

在项目根目录下执行以下命令

  1. 1. 依赖打包
  2. # parent pom 安装到本地仓库, sdk 也进行安装
  3. ./mvnw install -N
  4. ./mvnw clean install -pl framework,framework/sdk-parent,framework/sdk-parent/domain,framework/sdk-parent/sdk,framework/sdk-parent/xpack-interface,framework/sdk-parent/jmeter
  5. # 如果是企业版本 需要加上 framework/sdk-parent/xpack-interface
  6. 2. 整体打包
  7. ./mvnw clean package

server-start

  • 启动顺序
    先启动 eureka 服务,再启动 system-setting,到这一步可以启动成功,可以访问页面了。

server-start
server-start

如果要进行多模块联调的话需要启动 gateway 和其他服务,可以通过 eureka 查看服务信息,注册成功,就可以多模块联调了。

server-start

  • 启动
    运行某一模块,比如 测试跟踪模块(test-track),选择 test-track 的 Spring Boot 启动项,直接启动即可。

2.3 前端

MeterSphere 前端使用了 Vue.js 作为前端框架,ElementUI 作为 UI 框架,并使用 npm 作为包管理工具。开发者请先下载 Node.js 作为运行环境,IDEA 用户建议安装 Vue.js 插件,便于开发。

  • 初始化配置
    进入 metersphere-server/test-track/frontend/ 目录,执行命令npm install安装相关前端组件。

  • 运行前端服务
    进入到 metersphere-server/test-track/frontend/ 目录,执行命令npm run serve启动前端服务。