Hugo博客的完整CI/CD流程:从Git推送到自动部署
项目背景 这是一个基于Hugo的个人技术博客系统,采用完全自动化的CI/CD流程,实现了从本地编写文章到生产环境发布的全流程自动化。整个系统具有以下特点: ✅ 零成本运营:使用GitHub Actions免费额度 ✅ 高度自动化:Git推送即部署,2-3分钟自动完成 ✅ 模块化设计:支持多专题独立管理 ✅ 自主可控:自建访客统计系统 ✅ 性能优异:静态网站,首页加载<2秒 核心工作流: 写作(2分钟) → Git推送(即时) → Actions构建(1.5分钟) → rsync部署(30秒) → 网站生效(即时) 技术架构 技术栈 层级 技术选型 说明 静态网站生成器 Hugo v0.150.1 extended 构建速度快,支持SCSS 主题 PaperMod 简洁美观,功能丰富 CI/CD平台 GitHub Actions 免费,与GitHub深度集成 版本控制 Git + GitHub 代码托管和协作 Web服务器 Nginx 1.20.1 高性能静态文件服务 SSL证书 Let’s Encrypt (acme.sh) 免费,自动续期 访客统计 Python Flask + SQLite 自建,数据可控 服务器 阿里云ECS CentOS/Alibaba Cloud Linux 系统架构图 ┌─────────────────────────────────────────────────────────────┐ │ 本地开发环境 │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 写作编辑 │→│ 本地预览 │→│ Git提交 │ │ │ │ Markdown │ │hugo server│ │git push │ │ │ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ GitHub平台 │ │ ┌──────────────────────────────────────────────────────┐ │ │ │ GitHub Actions (CI/CD) │ │ │ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │ │ │ │ │检出 │→│安装 │→│构建 │→│SSH │→│部署 │ │ │ │ │ │代码 │ │Hugo │ │网站 │ │连接 │ │文件 │ │ │ │ │ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ │ │ │ └──────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 生产服务器 │ │ ┌──────────────────────────────────────────────────────┐ │ │ │ Nginx Web服务器 │ │ │ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ │ │ 静态文件 │ │ SSL证书 │ │ 访客统计 │ │ │ │ │ │ /blog/ │ │ HTTPS加密 │ │ Flask API │ │ │ │ │ └────────────┘ └────────────┘ └────────────┘ │ │ │ └──────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 用户访问 │ │ https://ruyueshuke.com/blog/ │ └─────────────────────────────────────────────────────────────┘ GitHub Actions CI/CD配置 配置文件结构 文件位置:.github/workflows/deploy.yml ...