CI/CD 集成

📎 引用文件

本文引用的文件 - test.yml - desktop-windows.yml - wiki-deploy.yml - wiki.yml - dependabot.yml - ci_grep_gates.sh - ci_env_var_gate.py - Dockerfile - docker-compose.yml - pyproject.toml - vitest.config.ts - package.json

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖分析
  7. 性能考虑
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件面向 Vibe-Trading 的持续集成与持续交付(CI/CD)体系,系统化说明代码质量门禁、测试执行、前端构建与测试、桌面端打包、镜像构建与部署、以及依赖治理策略。文档同时给出不同环境(开发、预发布、生产)的流水线落地建议与常见问题排障方法,帮助团队在保障质量的前提下快速、安全地交付。

项目结构

仓库采用多语言、多产物结构:Python 后端与量化模块位于 agent,前端位于 frontend,桌面端 Electron 应用位于 desktop/electron,Wiki 静态站点位于 wiki。CI/CD 通过 GitHub Actions 编排,结合 Docker 进行容器化构建与运行,使用 Dependabot 管理依赖更新。

graph TB A["GitHub 推送/PR"] --> B["CI 工作流<br/>.github/workflows/test.yml"] A --> C["桌面端打包<br/>.github/workflows/desktop-windows.yml"] A --> D["Wiki 校验<br/>.github/workflows/wiki.yml"] A --> E["Wiki 部署<br/>.github/workflows/wiki-deploy.yml"] B --> F["Python 安装与缓存"] B --> G["代码质量门禁<br/>tools/ci_grep_gates.sh"] B --> H["单元测试+覆盖率<br/>pytest + coverage"] B --> I["前端构建与测试<br/>Vite + Vitest"] C --> J["Electron 构建与签名检查"] D --> K["JS/JSON/静态资源校验"] E --> L["Cloudflare Pages 部署"]

图表来源 - test.yml:1-164 - desktop-windows.yml:1-95 - wiki.yml:1-59 - wiki-deploy.yml:1-39

章节来源 - test.yml:1-164 - desktop-windows.yml:1-95 - wiki.yml:1-59 - wiki-deploy.yml:1-39

核心组件

章节来源 - test.yml:1-164 - ci_grep_gates.sh:1-156 - ci_env_var_gate.py:1-302 - pyproject.toml:232-272 - vitest.config.ts:1-24 - Dockerfile:1-108 - docker-compose.yml:1-90 - dependabot.yml:1-103

架构总览

下图展示从代码提交到制品产出的端到端流程,包括质量门禁、测试、构建与部署环节。

sequenceDiagram participant Dev as "开发者" participant GH as "GitHub" participant CI as "CI 工作流" participant Py as "Python 环境" participant FE as "前端环境" participant DK as "Docker" participant CF as "Cloudflare Pages" Dev->>GH : 推送/创建 PR GH-->>CI : 触发工作流 CI->>Py : 安装依赖(缓存) CI->>Py : 执行代码质量门禁 CI->>Py : 运行 pytest + 覆盖率 CI->>FE : 构建前端并运行 Vitest CI-->>Dev : 测试结果与覆盖率报告 Note over CI,DK : 如需发布镜像,可在额外工作流中基于 Dockerfile 构建并推送 GH-->>CF : 合并 main 且 wiki 变更时触发部署 CF-->>Dev : 站点上线

图表来源 - test.yml:1-164 - wiki-deploy.yml:1-39 - Dockerfile:1-108

详细组件分析

持续集成流水线(Python + 前端)

flowchart TD Start(["开始"]) --> Checkout["检出代码"] Checkout --> SetupPy["设置 Python 3.11 并缓存 pip"] SetupPy --> VerifyLock["验证哈希锁定依赖"] VerifyLock --> InstallExtras["安装 dev/openbb/stats 扩展"] InstallExtras --> Gates["执行仓库安全门禁"] Gates --> EnvGate["执行环境变量访问门禁"] EnvGate --> Syntax["语法检查"] Syntax --> TestPy["运行 Python 测试 + 覆盖率"] TestPy --> SetupNode["设置 Node 22 并缓存 npm"] SetupNode --> BuildFE["构建前端"] BuildFE --> TestFE["运行前端测试"] TestFE --> End(["结束"])

图表来源 - test.yml:1-164

章节来源 - test.yml:1-164

代码质量门禁与安全扫描

flowchart TD S(["开始"]) --> Scan["遍历目标目录与文件"] Scan --> Parse["解析 AST 并识别读取模式"] Parse --> Check{"是否允许?"} Check --> |是| Next["继续扫描"] Check --> |否| Violation["记录违规并输出位置"] Next --> Scan Violation --> Result{"存在违规?"} Result --> |是| Fail["失败并提示修复指引"] Result --> |否| Pass["通过"]

图表来源 - ci_grep_gates.sh:1-156 - ci_env_var_gate.py:1-302

章节来源 - ci_grep_gates.sh:1-156 - ci_env_var_gate.py:1-302

测试覆盖率与回归测试

flowchart TD TStart["开始测试"] --> PyTest["运行 pytest + 覆盖率"] PyTest --> FETest["运行 Vitest"] FETest --> Report["生成覆盖率报告"] Report --> TEnd["结束"]

图表来源 - test.yml:1-164 - pyproject.toml:232-272 - vitest.config.ts:1-24

章节来源 - test.yml:1-164 - pyproject.toml:232-272 - vitest.config.ts:1-24

持续部署策略(镜像构建与应用部署)

graph TB subgraph "构建阶段" FB["前端构建"] --> PYB["Python 依赖编译与 venv 构建"] end subgraph "运行时阶段" RT["最小化运行时镜像"] HC["健康检查 /live"] end FB --> PYB --> RT --> HC

图表来源 - Dockerfile:1-108

章节来源 - Dockerfile:1-108 - docker-compose.yml:1-90

GitHub Actions 工作流配置

章节来源 - test.yml:1-164 - desktop-windows.yml:1-95 - wiki.yml:1-59 - wiki-deploy.yml:1-39

依赖治理与漏洞检测

章节来源 - dependabot.yml:1-103

依赖分析

graph LR CI["CI 工作流"] --> Gates["质量门禁脚本"] CI --> Tests["测试套件"] CI --> Build["前端构建"] Build --> Image["Docker 镜像"] Image --> Run["运行时服务"] Desktop["桌面端工作流"] --> Package["安装包"] Wiki["Wiki 工作流"] --> Deploy["Cloudflare Pages"]

图表来源 - test.yml:1-164 - desktop-windows.yml:1-95 - wiki.yml:1-59 - wiki-deploy.yml:1-39 - Dockerfile:1-108

章节来源 - test.yml:1-164 - desktop-windows.yml:1-95 - wiki.yml:1-59 - wiki-deploy.yml:1-39 - Dockerfile:1-108

性能考虑

[本节为通用指导,不直接分析具体文件]

故障排查指南

章节来源 - ci_grep_gates.sh:1-156 - ci_env_var_gate.py:1-302 - test.yml:1-164 - desktop-windows.yml:1-95 - wiki-deploy.yml:1-39

结论

Vibe-Trading 的 CI/CD 体系通过严格的代码质量门禁、全面的测试与覆盖率采集、稳定的前端与桌面端构建流程,以及安全的容器化部署策略,实现了高质量、可追溯、可回滚的交付能力。建议在生产环境引入依赖漏洞扫描与更细粒度的环境隔离,进一步提升安全性与稳定性。

[本节为总结性内容,不直接分析具体文件]

附录

[本节为通用指导,不直接分析具体文件]