开发环境搭建

1 项目结构

  1. .
  2. ├── Jenkinsfile # 构建镜像使用的 jenkinsfile
  3. ├── Dockerfile # 构建镜像使用的 Dockerfile
  4. ├── LICENSE
  5. ├── OWNERS
  6. ├── README.md # 项目中文介绍
  7. ├── README-EN.md # 项目英文介绍
  8. ├── SECURITY.md # 安全说明
  9. ├── CODE_OF_CONDUCT.md #
  10. ├── CONTRIBUTING.md
  11. ├── build.md # 构建过程
  12. ├── backend # 后端项目主目录
  13. ├── app
  14. ├── framework
  15. ├── app
  16. ├── pom.xml # 后端 maven 项目使用的 pom 文件
  17. └── .gitignore
  18. ├── frontend # 前端项目主目录
  19. ├── .husky
  20. ├── config # 项目构建配置
  21. ├── public
  22. ├── src # 前端代码目录
  23. ├── types
  24. ├── .env.development # 开发环境变量声明
  25. ├── .env.production # 生产环境变量声明
  26. ├── .eslintignore
  27. ├── .eslintrc.js
  28. ├── .eslintrc-auto-import.json
  29. ├── .gitignore
  30. ├── .prettierignore
  31. ├── .prettierrc.js
  32. ├── .stylelintrc.js
  33. ├── babel.config.js
  34. ├── commitlint.config.js # commitlint 配置,校验 commit 信息
  35. ├── components.d.ts # 组件注册 TS 声明
  36. ├── Dockerfile # 构建前端应用使用的 Dockerfile
  37. ├── index.html # 单页面html模板
  38. ├── nginx.conf # Nginx 配置文件
  39. ├── package.json # 前端项目中的元数据文件
  40. ├── pom.xml # 前端 maven 项目使用的 pom 文件
  41. ├── postcss.config.js
  42. ├── README.md
  43. ├── tailwind.config.js
  44. ├── tsconfig.json
  45. ├── vitest.config.ts
  46. ├── .editorconfig
  47. ├── .gitignore
  48. ├── babel.config.js # babel配置,支持JSX
  49. ├── package.json
  50. ├── vue.config.js
  51. └── 代码规范.MD
  52. ├── .gitignore
  53. ├── mvnw
  54. ├── mvnw.cmd
  55. └── pom.xml # 整体 maven 项目使用的 pom 文件

2 配置开发环境

2.1 拉取代码

需要拉取 metersphere 服务代码,并切换到 v3.x 分支。

2.2 启动

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

  1. JDK 21
  2. Maven 3.8.6 +
  • 数据库初始化
    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'*/;
  • MeterSphere 配置文件
    MeterSphere 会默认加载该路径下的配置文件 /opt/metersphere/conf/metersphere.properties,请参考下列配置创建对应目录及配置文件。
  1. # 数据库配置
  2. spring.datasource.url=jdbc:mysql://172.16.200.18:3307/metersphere?autoReconnect=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false
  3. spring.datasource.password=Password123@mysql
  4. spring.datasource.username=root
  5. # kafka 配置,result-hub 服务需要使用 kafka 进行测试结果的收集和处理
  6. kafka.bootstrap-servers=172.16.10.155:9092
  7. # minio 配置
  8. minio.endpoint=http://172.16.200.18:9000
  9. minio.access-key=admin
  10. minio.secret-key=Password123@minio
  • Redis 配置文件
    MeterSphere 会默认加载该路径下的配置文件 /opt/metersphere/conf/redisson.yml,请参考下列配置创建对应目录及配置文件。
  1. # Redis 配置
  2. singleServerConfig:
  3. password: Password123@redis
  4. address: "redis://localhost:6379"
  5. database: 1
  • 项目打包
    在项目根目录下执行以下命令
  1. 1 依赖打包
  2. # 此命令会将parent pom 安装到本地仓库,其他外部子工程可以获得最新的 <properties></properties>
  3. ./mvnw install -N
  4. # 此命令会将 domain sdk ,其他外部子工程可以获得最新的 jar
  5. ./mvnw clean install -DskipTests -DskipAntRunForJenkins --file backend/pom.xml
  6. 2 整体打包
  7. ./mvnw clean package

server-start

  • 启动服务

server-start

server-start