logo
5
0
WeChat Login
docs(readme): 添加项目介绍和自动化流程文档

CNB Auto Build - GinBlog

本项目是一个基于 Gin 框架和 Vue.js 开发的全栈博客系统,支持云原生开发、自动化镜像构建及平滑部署。

🚀 核心功能

  • 前后端分离架构:后端采用 Golang (Gin),前端包含展示界面 (Vue/Vuetify) 与管理后台 (Vue/Ant Design)。
  • 全自动化 CI/CD:通过 .cnb.yml 实现从代码推送、容器构建、镜像存储到远程部署的全自动化流程。
  • 云原生支持:提供 Docker、docker-compose 支持,实现环境一键部署。
  • 内容管理:支持文章发布、分类管理、评论审核、用户权限控制及个人资料设置。

🛠 技术栈

  • 后端:Go, Gin, Gorm, MySQL, JWT
  • 前端:Vue 2, Vuetify (前台), Ant Design Vue (后台), Axios
  • 运维/CI:CNB (Cloud Native Build), Docker, docker-compose, Nginx

📄 CNB 自动化流程详解 (.cnb.yml)

项目中的 .cnb.yml 是整个自动化流程的核心,它定义了以下几个关键阶段:

1. 触发事件

  • push: 当代码推送到仓库时,自动触发构建、镜像推送及部署任务。
  • vscode: 在 CNB 云端开发环境中打开项目时,自动启动本地开发服务。

2. 容器构建与管理

push 事件中,流水线会并行或顺序执行以下步骤:

  • 多容器构建
    • web/front -> gin-blog-web
    • web/admin -> gin-blog-admin-web
    • . (后端) -> gin-blog-api
  • 镜像命名规则:使用环境变量 ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE} 配合提交短哈希 ${CNB_COMMIT_SHORT} 标记镜像版本。
  • 自动化推送:将构建好的镜像推送到 CNB 官方 Docker 仓库。

3. 自动化部署 (rsync + ssh)

  • 文件同步 (rsync):仅同步部署必需的文件(如 docker-compose.yml, config, database 等),排除不必要的源代码。
  • 远程执行 (ssh)
    • 导出最新的镜像环境变量。
    • 远程机器拉取最新镜像 (docker compose pull)。
    • 平滑更新:执行 docker compose up -d 实现无缝更新服务。

4. 云端开发支持

  • 资源声明:支持自定义 CPU 资源,默认分配 amd64 架构。
  • 内置服务:自动启用 docker 服务支持,允许在 CI 流程中执行 Docker 命令。

📁 项目结构

├── api/v1/ # 后端 API 逻辑 ├── config/ # 配置文件 ├── database/ # 数据库初始化脚本 ├── middleware/ # Gin 中间件 (JWT, CORS, Logger) ├── model/ # 数据库模型 (GORM) ├── routes/ # 路由配置 ├── web/ │ ├── admin/ # 管理后台前端项目 (Vue + Ant Design) │ └── front/ # 前端展示界面 (Vue + Vuetify) ├── .cnb.yml # CNB 自动化流水线配置 ├── docker-compose.yml # 容器编排文件 └── main.go # 后端入口

🚀 快速开始

  1. 环境准备:安装 Docker 和 docker-compose。
  2. 配置:根据 config/config.ini 配置数据库信息。
  3. 启动
    docker-compose up -d