开发与操作
开发与运维
相关源文件
本章引用的主要源码文件:
.gitlab-ci.ymlHISTORY.rstMakefileconfig.envdocker/Makefiledocker/rootfs/versiondocs/parts/troubleshooting/static_files.txtmayan/__init__.pymayan/apps/appearance/management/commands/appearance_prepare_static.pymayan/apps/common/dependencies.pymayan/apps/converter/dependencies.pymayan/apps/django_gpg/backends/python_gnupg.pymayan/apps/django_gpg/dependencies.pymayan/apps/document_states/dependencies.pymayan/apps/platform/templates/platform/docker/dockerfile.tmplmayan/apps/platform/templates/platform/docker/entrypoint.tmplmayan/apps/platform/templates/platform/docker/supervisord.tmplmayan/apps/platform/templates/platform/gitlab-ci.tmplmayan/apps/rest_api/dependencies.pymayan/apps/task_manager/dependencies.pymayan/settings/literals.pyrequirements/base.txtrequirements/build.txtrequirements/common.txtrequirements/development.txtrequirements/documentation.txtrequirements/testing-base.txtsetup.py
本页面为 Mayan EDMS 的开发者和管理员提供全面指导,内容涵盖开发环境搭建、构建流程、测试框架、CI/CD 管线以及部署策略。如需了解核心架构和应用框架,请参阅核心架构。如需了解具体的配置管理细节,请参阅配置管理。
开发环境搭建
本地开发基础设施
Mayan EDMS 通过 Make 目标和 Docker 容器提供了全面的开发环境。开发环境支持多种数据库后端和服务依赖。
开发环境使用特定的配置路径和设置模块:
来源: Makefile:512-534, config.env:1-74, requirements/development.txt:1-11
特定数据库的开发
Mayan EDMS 支持多种数据库后端用于开发和测试:
| 后端 | 容器 | 连接设置 | Make 目标 |
|---|---|---|---|
| PostgreSQL | mayan-development-postgres | 端口 5432,用户/密码: postgres | manage-with-postgresql |
| MySQL | mayan-test-mysql | 端口 3306,可配置凭据 | manage-with-mysql |
| Oracle | mayan-test-oracle | 端口 49161,测试容器 | manage-with-oracle |
| SQLite | 内置 | 基于文件,无需容器 | 默认开发 |
来源: Makefile:377-390, Makefile:412-449, config.env:7-9
构建系统与打包
Python 包构建流程
构建系统采用多阶段方法来创建可分发的包:
setup.py 文件会动态发现包并管理依赖:
来源: setup.py:119-160, Makefile:285-298, requirements/build.txt:1-4
Docker 构建系统
Docker 构建流程使用多阶段构建,并配合平台模板:
来源: docker/Makefile:15-34, mayan/apps/platform/templates/platform/docker/dockerfile.tmpl:1-204, config.env:20-34
版本管理
版本信息集中管理,并在整个系统中传播:
来源: mayan/__init__.py:1-13, docker/rootfs/version:1-2, Makefile:179-185
测试框架
测试执行基础设施
Mayan EDMS 提供了全面的测试能力,支持多种数据库后端和部署场景:
测试数据库容器
测试基础设施使用专用的 Docker 容器进行数据库测试:
| 数据库 | 容器名称 | 镜像 | 端口 | 用途 |
|---|---|---|---|---|
| PostgreSQL | mayan-test-postgresql | postgres:12.11-alpine | 5432 | 集成测试 |
| MySQL | mayan-test-mysql | mysql:8.0 | 3306 | 跨数据库兼容性 |
| Redis | mayan-test-redis | redis:6.2-alpine | 6379 | 缓存/消息代理测试 |
| Elasticsearch | mayan-test-elastic | elasticsearch:7.17.0 | 9200 | 搜索后端测试 |
来源: Makefile:46-114, Makefile:403-458, config.env:26-34
覆盖率与质量保证
测试覆盖率和代码质量工具已集成到开发工作流中:
来源: Makefile:129-136, requirements/testing-base.txt:1-7
持续集成与持续交付管线架构
GitLab CI 管线结构
CI/CD 管线通过平台模板定义,提供全面的自动化能力:
CI 作业模板与继承
管线使用 YAML 锚点和作业模板来实现代码复用:
来源: .gitlab-ci.yml:1-431, mayan/apps/platform/templates/platform/gitlab-ci.tmpl:1-431
基于分支的发布策略
不同的发布类型会触发特定的管线行为:
| 分支模式 | 触发的作业 | 制品 |
|---|---|---|
releases/all_major | 完整管线,主版本标签 | Python, Docker, 文档 |
releases/all_minor | 完整管线,次版本标签 | Python, Docker |
releases/testing | 测试构建 | 测试制品 |
releases/nightly | 每日构建 | 开发镜像 |
tests/* | 仅执行测试 | 测试报告 |
来源: .gitlab-ci.yml:29-35, .gitlab-ci.yml:300-373
发布管理
版本控制与标签
版本管理遵循语义化版本规范,并实现自动化传播:
发布工作流集成
GitLab 发布分支会触发自动化流程:
来源: Makefile:179-185, mayan/__init__.py:1-5, Makefile:299-350
升级与迁移支持
系统提供了自动化的升级能力:
来源: .gitlab-ci.yml:282-343, mayan/apps/platform/templates/platform/docker/entrypoint.tmpl:36-39
部署策略
基于 Docker 的部署
主要的部署方法使用 Docker,并提供了全面的配置选项:
开发与预发布环境
多个部署目标支持不同的使用场景:
来源: mayan/apps/platform/templates/platform/docker/entrypoint.tmpl:1-203, docker/Makefile:79-153, Makefile:462-477
配置管理
特定环境的配置通过多层机制进行管理:
| 配置层级 | 文件 | 用途 |
|---|---|---|
| 默认值 | config.env | 构建时默认值 |
| Docker 环境 | entrypoint.sh | 运行时配置 |
| 设置模块 | mayan.settings.* | 应用配置 |
| 用户覆盖 | 环境变量 | 部署特定覆盖 |
来源: config.env:1-74, mayan/settings/literals.py:1-63
这套开发与运维基础设施为在各种环境和用例中构建、测试和部署 Mayan EDMS 提供了坚实的基础。