47 lines
3.4 KiB
Markdown
47 lines
3.4 KiB
Markdown
# 项目变更日志 (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. 由 `main` 或 `master` 分支的代码推送触发。
|
||
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),以及触发器分支的正确性。
|
||
|
||
--- |