agentic_huge_data_base / wiki
页面 Mayan EDMS · 6 开发与操作·DeepWiki 中文全文译文

6 · 开发与操作(Development & Operations)

企业电子文档治理 · 聚焦本章的模块关系、源码依据与实现要点。

项目Mayan EDMS 章节6 状态全文译文 模块测试、发布与运维、工作流与编排、配置治理、文档对象与元数据
源码线索
  • .gitlab-ci.yml
  • HISTORY.rst
  • Makefile
  • config.env
  • docker/Makefile
  • docker/rootfs/version
  • docs/parts/troubleshooting/static_files.txt
  • mayan/__init__.py
  • mayan/apps/appearance/management/commands/appearance_prepare_static.py
  • mayan/apps/common/dependencies.py
模块标签
  • 测试、发布与运维
  • 工作流与编排
  • 配置治理
  • 文档对象与元数据
  • 安装与启动

章节正文

开发与操作

开发与运维

相关源文件

本章引用的主要源码文件:

  • .gitlab-ci.yml
  • HISTORY.rst
  • Makefile
  • config.env
  • docker/Makefile
  • docker/rootfs/version
  • docs/parts/troubleshooting/static_files.txt
  • mayan/__init__.py
  • mayan/apps/appearance/management/commands/appearance_prepare_static.py
  • mayan/apps/common/dependencies.py
  • mayan/apps/converter/dependencies.py
  • mayan/apps/django_gpg/backends/python_gnupg.py
  • mayan/apps/django_gpg/dependencies.py
  • mayan/apps/document_states/dependencies.py
  • mayan/apps/platform/templates/platform/docker/dockerfile.tmpl
  • mayan/apps/platform/templates/platform/docker/entrypoint.tmpl
  • mayan/apps/platform/templates/platform/docker/supervisord.tmpl
  • mayan/apps/platform/templates/platform/gitlab-ci.tmpl
  • mayan/apps/rest_api/dependencies.py
  • mayan/apps/task_manager/dependencies.py
  • mayan/settings/literals.py
  • requirements/base.txt
  • requirements/build.txt
  • requirements/common.txt
  • requirements/development.txt
  • requirements/documentation.txt
  • requirements/testing-base.txt
  • setup.py

本页面为 Mayan EDMS 的开发者和管理员提供全面指导,内容涵盖开发环境搭建、构建流程、测试框架、CI/CD 管线以及部署策略。如需了解核心架构和应用框架,请参阅核心架构。如需了解具体的配置管理细节,请参阅配置管理

开发环境搭建

本地开发基础设施

Mayan EDMS 通过 Make 目标和 Docker 容器提供了全面的开发环境。开发环境支持多种数据库后端和服务依赖。

Mayan EDMS · 本地开发基础设施 · 图 1
Mayan EDMS · 本地开发基础设施 · 图 1

开发环境使用特定的配置路径和设置模块:

来源: Makefile:512-534, config.env:1-74, requirements/development.txt:1-11

特定数据库的开发

Mayan EDMS 支持多种数据库后端用于开发和测试:

后端容器连接设置Make 目标
PostgreSQLmayan-development-postgres端口 5432,用户/密码: postgresmanage-with-postgresql
MySQLmayan-test-mysql端口 3306,可配置凭据manage-with-mysql
Oraclemayan-test-oracle端口 49161,测试容器manage-with-oracle
SQLite内置基于文件,无需容器默认开发

来源: Makefile:377-390, Makefile:412-449, config.env:7-9

构建系统与打包

Python 包构建流程

构建系统采用多阶段方法来创建可分发的包:

Mayan EDMS · Python 包构建流程 · 图 2
Mayan EDMS · Python 包构建流程 · 图 2

setup.py 文件会动态发现包并管理依赖:

来源: setup.py:119-160, Makefile:285-298, requirements/build.txt:1-4

Docker 构建系统

Docker 构建流程使用多阶段构建,并配合平台模板:

Mayan EDMS · Docker 构建系统 · 图 3
Mayan EDMS · Docker 构建系统 · 图 3

来源: 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 提供了全面的测试能力,支持多种数据库后端和部署场景:

Mayan EDMS · 测试执行基础设施 · 图 4
Mayan EDMS · 测试执行基础设施 · 图 4
测试数据库容器

测试基础设施使用专用的 Docker 容器进行数据库测试:

数据库容器名称镜像端口用途
PostgreSQLmayan-test-postgresqlpostgres:12.11-alpine5432集成测试
MySQLmayan-test-mysqlmysql:8.03306跨数据库兼容性
Redismayan-test-redisredis:6.2-alpine6379缓存/消息代理测试
Elasticsearchmayan-test-elasticelasticsearch:7.17.09200搜索后端测试

来源: Makefile:46-114, Makefile:403-458, config.env:26-34

覆盖率与质量保证

测试覆盖率和代码质量工具已集成到开发工作流中:

来源: Makefile:129-136, requirements/testing-base.txt:1-7

持续集成与持续交付管线架构

GitLab CI 管线结构

CI/CD 管线通过平台模板定义,提供全面的自动化能力:

Mayan EDMS · GitLab CI 管线结构 · 图 5
Mayan EDMS · GitLab CI 管线结构 · 图 5
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

发布管理

版本控制与标签

版本管理遵循语义化版本规范,并实现自动化传播:

Mayan EDMS · 版本控制与标签 · 图 6
Mayan EDMS · 版本控制与标签 · 图 6
发布工作流集成

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 EDMS · 基于 Docker 的部署 · 图 7
Mayan EDMS · 基于 Docker 的部署 · 图 7
开发与预发布环境

多个部署目标支持不同的使用场景:

来源: 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 提供了坚实的基础。