5.9 KiB
开发、生产环境与双部署方式实施计划
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: 建立可机器验证的开发/生产环境变量契约、本地 Redis Compose,以及 Docker Compose 与 Ubuntu 源码生产部署规范和配置骨架。
Architecture: 八份 env 模板按进程和环境分离,但同一进程在 development/production 使用相同变量名。静态契约测试负责检查模板完整性、敏感值为空、Web 仅暴露 VITE_*、生产安全默认值和部署文件边界;当前应用尚未实现,不伪造可运行的应用镜像或启动命令。
Tech Stack: dotenv 模板、Docker Compose、Redis、systemd、Nginx、Node.js 内置测试运行器、Markdown、GitNexus。
Global Constraints
- 环境仅定义
development与production,生产禁止模拟数据、热更新和开发默认值回退。 - 仓库提交八份
*.env.example,不提交任何真实.env或凭据。 - 本地 Compose 只启动 Redis;Web/API/Scheduler/Worker 从源码运行。
- 生产支持 Docker Compose 和 Ubuntu 22.04/24.04 x86_64 源码部署。
- Node.js 22 LTS、pnpm 10、Nginx 和基础设施由管理员提供,项目只验证不安装。
- 源码部署使用
a-share用户和/etc/a-share-analysis/*.env。 - MySQL 与 RabbitMQ 第一阶段默认关闭;MySQL 条件配置遵守 GOV-005。
Task 1: 建立失败的环境配置契约测试
Files:
- Create:
tools/governance/environment-baseline.test.mjs - Modify:
package.json
Interfaces:
-
Consumes:
deploy/env/、deploy/compose/、deploy/systemd/、deploy/nginx/和docs/deployment/。 -
Produces:
npm run test:environment-baseline。 -
Step 1: 编写模板和部署边界测试
测试八份模板存在、同一进程两环境键集合相同、敏感键为空、Web 仅含 VITE_*、生产安全开关正确、本地 Compose 仅定义 Redis,并检查 systemd/Nginx 与两份生产部署文档。
- Step 2: 验证测试因文件缺失而失败
运行:npm run test:environment-baseline
预期:失败明确指出第一份缺少的环境模板或部署文件。
Task 2: 实现统一环境模板
Files:
- Create:
deploy/env/development/api.env.example - Create:
deploy/env/development/scheduler.env.example - Create:
deploy/env/development/worker.env.example - Create:
deploy/env/development/web.env.example - Create:
deploy/env/production/api.env.example - Create:
deploy/env/production/scheduler.env.example - Create:
deploy/env/production/worker.env.example - Create:
deploy/env/production/web.env.example - Modify:
.gitignore
Interfaces:
-
Consumes: GOV-006 设计中的变量作用域。
-
Produces: 后续 NestJS Schema 和部署方式共同使用的变量名契约。
-
Step 1: 编写四类进程模板
每项变量附中文说明;敏感变量保持空值;MySQL/RabbitMQ/AI 由功能开关控制条件必填;生产值拒绝模拟数据和调试模式。
- Step 2: 加固忽略规则
只允许提交 *.env.example,忽略 *.env.local、真实 env 和本地运行目录。
Task 3: 实现本地 Redis 与生产部署骨架
Files:
- Create:
deploy/compose/development.yml - Create:
deploy/compose/production.yml.example - Create:
deploy/systemd/a-share-api.service.example - Create:
deploy/systemd/a-share-scheduler.service.example - Create:
deploy/systemd/a-share-worker.service.example - Create:
deploy/nginx/a-share-analysis.conf.example - Create:
docs/deployment/local-development.md - Create:
docs/deployment/docker-compose-production.md - Create:
docs/deployment/ubuntu-source-production.md
Interfaces:
-
Consumes: Task 2 的模板键集合。
-
Produces: 本地 Redis 启动入口、生产 Compose 配置边界、systemd EnvironmentFile 和 Nginx 代理示例。
-
Step 1: 配置本地 Redis Compose
固定 Redis 镜像补丁版本,只暴露本机端口,使用项目专用容器名、网络、健康检查和仓库外本地数据目录;不得定义其他服务。
- Step 2: 配置生产部署骨架
生产 Compose 只表达应用服务的配置契约和不可变镜像要求;systemd 使用独立 EnvironmentFile,Nginx 托管静态文件并代理 /api/。
- Step 3: 编写开发与双生产部署文档
明确当前应用尚未脚手架化,文档只验证配置与部署边界;列出管理员前置条件、版本检查、健康检查、升级和回退规则。
- Step 4: 验证测试转绿
运行:npm run test:environment-baseline && npm run test:mysql-baseline && npm run test:governance
预期:全部通过。Docker 可用时额外运行 docker compose -f deploy/compose/development.yml config。
Task 4: 完成现行规范、追溯与发布
Files:
- Modify:
docs/architecture/system-architecture.md - Modify:
docs/governance/code-development-standards.md - Modify:
docs/governance/development-workflow.md - Modify:
README.md - Modify:
docs/index.md - Modify:
CHANGELOG.md - Modify:
VERSION - Create: GOV-006 除现有
design.md、implementation-plan.md、gitnexus/before.md外的全部必备档案。
Interfaces:
-
Consumes: 通过契约测试的配置与部署文件。
-
Produces: 可审查、可发布、可回退的 GOV-006 完整档案和
v0.0.5。 -
Step 1: 更新架构和开发规范
记录环境模型、配置校验、两种部署方式、平台范围、管理员职责和生产防误用要求。
- Step 2: 执行 GitNexus、测试和双 Review
检测完整暂存区并运行 npm run governance:finish -- GOV-006 environment-deployment-baseline。
- Step 3: 中文提交、推送与发布
提交并推送 main;封存后创建带注释 v0.0.5,精确推送并核对分支与标签。