# 项目变更日志 (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 + 脚本方案的产物)。 ---