1. 课程导论与CI/CD基础

1.1 什么是CI/CD

CI/CD(持续集成/持续交付)是一套通过自动化构建、测试与部署来加速软件交付的工程实践。它把传统“开发→测试→运维”的手工接力转变为自动化流水线,让每次代码变更都能快速、可靠地进入生产环境。

概念 英文全称 核心目标 典型活动
CI Continuous Integration 频繁合并代码并自动验证 代码提交 → 自动编译 → 单元测试 → 静态分析
CD Continuous Delivery 确保代码随时可部署到生产 自动构建制品 → 集成测试 → 预发布环境验证
CD Continuous Deployment 每次通过验证的变更自动上线 自动部署到生产 → 健康检查 → 回滚就绪
关键区分:Continuous Delivery 要求“一键部署”,但部署动作仍可由人工触发;Continuous Deployment 则完全自动化,无需人工干预。本课程以 Continuous Delivery 为主线,兼顾 Continuous Deployment 的进阶配置。

1.2 为什么Go Web服务需要CI/CD

Go 语言以其编译速度快、静态二进制、并发原生等特性成为构建 Web 服务的首选。然而,这些优势只有在配套的自动化流水线下才能充分发挥。以下是 Go Web 服务引入 CI/CD 的四个核心理由:

  • 编译一致性:Go 交叉编译能力让开发者能在本地为 Linux/amd64 构建二进制,但依赖环境(CGO、系统库、Go 版本)差异常导致“本地能跑,服务器报错”。CI 流水线在统一环境中编译,消除环境漂移。
  • 测试效率:Go 内置 go test 与基准测试框架,CI 可并行执行单元测试、集成测试、竞态检测(-race),在合并前拦截回归。
  • 多环境部署:Go 二进制部署简单(scp + systemd 即可),但开发、测试、预发布、生产环境需要不同的配置、数据库连接、日志级别。CD 流水线通过环境变量或配置文件注入,实现“一次构建,多处运行”。
  • 快速回滚:Go 静态二进制天然支持版本化部署,CD 流水线保留历史制品,出现故障时可秒级回退到上一版本。
行业数据:采用 CI/CD 的团队,部署频率提升 46 倍,变更失败率降低 7 倍(DORA 2023 报告)。对于 Go Web 服务,编译+测试阶段平均耗时可压缩至 2-5 分钟。

1.3 CI/CD 核心流程(SVG)

下图展示了一个典型的 Go Web 服务 CI/CD 流水线,从代码提交到生产部署的完整路径:

Go Web服务CI/CD流水线 Go Web 服务 CI/CD 流水线 代码提交 CI 构建 go build + go test 制品存储 二进制 + Docker 镜像 CD 部署 多环境发布 部署环境 开发环境 测试环境 预发布环境 生产环境 流水线触发方式 Push / Pull Request / Tag 打标 / 定时调度 反馈:构建状态 / 测试报告 / 部署日志 Go 二进制在 CI 阶段编译,CD 阶段通过环境变量注入配置,实现多环境部署

1.4 课程目标与学习路径

本课程面向具备 Go 基础、希望掌握生产级 CI/CD 实践的开发者。完成课程后,你将能够:

  • 独立设计并搭建 Go Web 服务的 CI/CD 流水线
  • 配置多环境(开发/测试/预发布/生产)自动化部署
  • 集成单元测试、集成测试、竞态检测与代码覆盖率门禁
  • 使用 GitHub Actions / GitLab CI / Jenkins 等主流工具实现流水线
  • 掌握制品管理、环境变量注入、健康检查与自动回滚策略

1.5 课程知识体系(SVG)

本课程共 30 章,按四个阶段递进展开。下图展示了整体知识结构:

课程知识体系结构 课程知识体系(30章) 阶段一:基础 CI/CD 概念 Go 项目结构 工具选型 (第1-5章) 阶段二:CI 自动编译 单元/集成测试 代码质量门禁 (第6-12章) 阶段三:CD 多环境配置 Docker 部署 健康检查/回滚 (第13-22章) 阶段四:进阶 K8s 集成 监控告警 安全扫描 (第23-30章) 推荐学习路径 ① 按阶段顺序学习,每章包含理论 + 动手实验 ② 每章末尾有练习与思考题,建议在真实仓库中实践 ③ 阶段三开始前,请确保已掌握 Docker 基础操作 每个阶段结束后有一个综合实战章节,串联该阶段所有知识点

1.6 学习准备与环境要求

工具/环境 版本要求 说明
Go ≥ 1.21 建议使用最新稳定版,支持 go mod 与 toolchain
Git ≥ 2.30 用于版本管理与 CI 触发
Docker ≥ 24.0 用于容器化部署实验(阶段三开始使用)
CI 平台 任选其一 GitHub Actions / GitLab CI / Jenkins(课程以 GitHub Actions 为主)
云服务 可选 如 AWS EC2 / 阿里云 ECS 用于部署实践(本地虚拟机亦可)
注意:本课程所有流水线配置均可在本地或免费层 CI 平台完成,无需付费订阅。部分部署章节使用 Docker Compose 模拟多环境,降低对真实云资源的依赖。

1.7 本章小结