Files
mqtt_power/LogBook.md
2025-05-23 15:51:16 +08:00

4.4 KiB
Raw Blame History

项目变更日志 (LogBook)

2025-05-23 (基于对话日期推断)

CI/CD 方案最终确定与配置

  • CI/CD 平台选择:
    • 最终确定使用 OneDev 作为CI/CD平台以获得更佳的可视化管理和操作体验。
    • 代码仓库将使用 OneDev 内置的 Git 服务,不再依赖外部 Gitea。
  • OneDev Agent 配置:
    • Agent 将在部署服务器上以 Docker 容器模式运行
    • 采用 Docker-out-of-Docker (DooD) 模式,通过将宿主机的 /var/run/docker.sock 挂载到 Agent 容器,使 Agent 能够控制宿主机 Docker 来执行镜像构建和 docker-compose 操作。
    • DEPLOYMENT_GUIDE.md 已更新,包含 Dockerized Agent 的详细配置步骤,包括数据持久化和作为服务运行的方法。
  • 部署流水线 (.onedev-buildspec.yml):
    • 流水线将负责:
      1. 从 OneDev 内置 Git 仓库检出代码。
      2. 从 OneDev 项目 Secrets 中获取敏感配置 (如数据库密码)。
      3. 动态生成 .env 文件供 docker-compose.yml 使用。
      4. 在 Agent 所在的宿主机上本地构建后端和前端应用的 Docker 镜像。
      5. 使用项目根目录下的 docker-compose.yml 和本地构建的镜像,通过 docker-compose up -d 命令启动或更新所有服务 (MySQL, EMQX, Backend App, Frontend App)。
  • 数据库自动初始化:
    • 修改了 docker-compose.yml 文件中 mysql-db 服务的配置。
    • 通过卷挂载,将项目中的 springboot-init-main/sql/mqtt_power.sql 脚本映射到 MySQL 容器的 /docker-entrypoint-initdb.d/init_schema.sql
    • 这将确保在 MySQL 容器首次启动且数据目录为空时,自动执行 SQL 脚本以创建所有必要的数据库表结构。
  • 相关文件更新:
    • DEPLOYMENT_GUIDE.md:已全面更新以反映纯 OneDev 方案、Dockerized Agent 配置及数据库自动初始化。
    • .onedev-buildspec.yml:已创建,定义了上述本地构建和部署的流水线。
    • docker-compose.yml:已修改,支持数据库自动初始化脚本挂载。
    • deploy.sh:已被删除 (原 Gitea + 脚本方案的产物)。

2024-08-13

  • 调整 CI/CD 方案至 OneDev (本地构建):
    • 用户反馈 OneDev builds 页面无内容,怀疑配置文件问题。
    • 分析现有 .onedev-buildspec.yml 包含多个冲突的 Job 定义 (部分推送外部 registry部分本地构建部分通过 SSH 部署)。
    • 决策: 简化 .onedev-buildspec.yml 为单个 Job (Build and Deploy mqtt_power on myagent)。
    • 新 Job 逻辑:
      1. 在用户指定的 OneDev Agent (myagent) 上运行。
      2. mainmaster 分支的代码推送触发。
      3. 检出代码。
      4. 从 OneDev Job Secrets 生成 .env 文件,包含数据库和 MQTT 连接信息。
      5. 使用项目根目录的 docker-compose.yml 在 Agent 本地构建后端 (springboot-app) 和前端 (nextjs-app) Docker 镜像。
      6. 使用 docker-compose up -d 启动所有服务 (MySQL, EMQX, 后端应用, 前端应用)。
    • 操作: 完全重写了 .onedev-buildspec.yml 以实现上述逻辑。
    • 强调了用户需要检查 Agent 名称匹配、OneDev Job Secrets 配置、docker-compose.yml 的构建上下文和镜像名、Agent 环境Docker, Docker Compose, sh/bash shell以及触发器分支的正确性。

2025-05-24 (基于对话日期推断)

  • 修复 OneDev 构建规范 (.onedev-buildspec.yml):
    • 问题: OneDev 报错 "Malformed build spec"。
    • 原因分析:
      1. Job 未显式声明其需要访问的 Job Secrets。
      2. 在 Shell 脚本中访问 Job Secrets 的语法不正确 (使用了 ${get_job_secret('...')} 而非 OneDev Shell 环境推荐的 @secret:...@)。
    • 解决方案:
      1. .onedev-buildspec.yml 的 Job 定义中添加了 jobSecrets 列表,明确列出所有必需的 Secret 名称 (如 DB_ROOT_PASSWORD, DB_NAME 等)。
      2. 修改了 Shell 脚本中的命令,将所有 Secrets 访问方式从 ${get_job_secret('...')} 更改为 @secret:SECRET_NAME@
    • 影响: 修正后的构建规范现在应该能被 OneDev 正确解析和执行。
    • 提醒用户检查 OneDev Job Secrets 配置与构建脚本中声明的名称一致性,以及 Agent 和服务名称的配置。