到这里,DevOps 基础篇 8 篇全部走完。这一篇不引入新内容,只做收尾——回顾主线、给出能力清单、标注掌握本篇内容能解决什么、不能解决什么。
一、演进全景
01 Nginx 静态资源代理 静态文件的基础设施前置
↓
02 生产环境入门 7×24 + 公网 IP,scp 第一次手动部署
↓
03 Git 与 GitHub 版本管理,git push 源码 / 服务器 pull + build
↓
04 服务端应用部署 进程持续存活(系统化)、三类运维痛点
↓
05 容器 Docker 服务器只跑进程,不再装包
↓
06 流水线基础 Jenkinsfile / 运维左移 / IaC 入门
↓
07 GitHub Actions 托管式流水线 + 两个实战
↓
08 多服务容器编排 docker-compose,多容器一起管理二、四次范式跃迁
把每一篇对应回 02 节的范式 :
| 节点 | 动作变化 | 扩容 | 扩容 | 范式性质 |
|---|---|---|---|---|
| 02 → 03 | scp dist → git pull + 本地构建 | 加入「带历史的源码」 | 不变 | 部署对象升级 |
| 03 → 04 | 增加「进程生命周期」动作链 | 加入「带运行时进程」 | 拆成 | 显式化隐含项 |
| 04 → 05 | 「构建动作」从服务器剥离 | 加入「带运行时的镜像」 | 不变 | 服务器回归本职 |
| 05 → 06 | 「手动 ssh」 → 「声明式 Jenkinsfile」 | 加入「代码」 | 不变 | 运维动作代码化 |
| 06 → 07 | Groovy DSL → YAML,云端执行 | 加入「托管式 Runner」 | 不变 | 工具栈升级 |
| 05 → 08 | docker run ×1 → docker compose up ×N | 加入「多服务拓扑」 | 不变 | 多容器扩展 |
主线规律:每一篇都在 扩容、 拆层或动作代码化—— 一直保持闭合,输入变化时动作结构不变。
三、能力清单(掌握本篇你能做什么)
静态站点
- ✅ Nginx 反向代理 + 托管
- ✅ SSH + scp 手动部署
- ✅
git push→ 服务器git pull+ build - ✅ VitePress 等静态站点构建产物落到 Nginx 目录
- ✅ GitHub Actions + Pages 全自动部署
后端应用
- ✅ Spring Boot / Flask 单服务部署(手动 + 流水线)
- ✅ JVM / Gunicorn 启动参数 + systemd 保活
- ✅ 环境变量 / 配置文件管理(DB 连接串等)
- ✅ Docker 镜像化部署(服务器只装 Docker)
- ✅ Jenkinsfile / GitHub Actions 流水线自动触发
多服务项目
- ✅ Docker Compose 编排 Nginx + 应用 + DB + 缓存
- ✅ 一份
docker-compose.yml描述全部服务的期望状态 - ✅
depends_on处理启动顺序 - ✅ 卷挂载持久化数据 / 共享配置
流水线与协作
- ✅ Jenkinsfile / GitHub Actions YAML 声明式编写
- ✅ webhook 触发自动构建
- ✅ 凭据管理(Credentials Store / Secrets)
- ✅ 失败通知(Slack / Email)
- ✅ Pipeline 运行历史可追溯
四、 延伸选型:主流流水线工具横向对比
在完成基础篇的实战后,我们会发现不同的场景适合不同的流水线工具。以下是目前 IT 领域主流流水线工具的横向对比与选型建议:
| 平台 / 技术 | 一句话定位 | 部署形态 | 推荐场景 |
|---|---|---|---|
| Jenkins | 插件最多、自托管「瑞士军刀」 | 自托管 | 传统架构、需深度定制的私有化部署 |
| Gitee Go | Gitee 官方 SaaS CI/CD,国内友好 | SaaS | 纯国内网 Git 仓库配套 |
| GitHub Actions | GitHub 原生 CI/CD,模板即开即用 | SaaS | 个人 / 开源项目首选 |
| 极狐 GitLab | 一站式 DevOps,可选 SaaS/自管 | SaaS / 自托管 | 中小团队 All-in-One 选型 |
| Tekton | K8s 原生流水线即代码 | 自托管 | K8s 深度用户与二次开发平台 |
| Argo CD | K8s 声明式 GitOps 持续部署工具 | 自托管 | 云原生 GitOps 部署方案 |
| 阿里云效 | 阿里云一站式研发协同,注册即用 | SaaS | 阿里云生态与企业研发管理 |
| 腾讯云 CNB | 腾讯云 DevOps SaaS,微信扫码即开 | SaaS | 腾讯云、微信开发者生态 |
选型建议
- 个人开发者:首选 GitHub Actions,其生态最完善、开箱即用的 Actions 插件极其丰富。
- 中小型企业与研发团队:推荐 极狐 GitLab 或 阿里云效 等一站式研发协同平台。它们侧重于团队开发协同,提供代码仓库、需求、制品到部署的完整链路。
- 极客或云原生架构转型:探索并尝试 Tekton、Argo CD。它们是云原生时代专门针对 Kubernetes 设计的,支持 IaC(基础设施即代码),能实现极高程度的声明式自动部署。但技术门槛较高,中小型非集群架构无需过度引入。
五、 能应对什么,不能应对什么
✅ 足以应对
| 场景 | 推荐方案 |
|---|---|
| 个人博客 / 文档站 | GitHub Actions + Pages(07) |
| 个人 / 小团队 Web 应用(Spring Boot / Flask) | Docker + GitHub Actions(05 + 07) |
| 中小型全栈项目(前端 + 后端 + DB) | Docker Compose + Jenkinsfile(08 + 06) |
| 国内部署(受网络限制) | 自托管 Jenkins + 阿里云镜像加速(06 + 05) |
| 多环境(dev / staging / prod) | Docker Compose 多文件 / Actions matrix(08 + 07) |
❌ 还差得远
| 场景 | 缺失能力 |
|---|---|
| 集群化(数十个服务节点) | Kubernetes / K3s(基础篇之外) |
| 灰度发布 / 蓝绿部署 | Service Mesh / Argo Rollouts |
| 自动扩缩容 | K8s HPA / Cluster Autoscaler |
| 多区域容灾 | K8s Federation / Cross-Region Replication |
| 完整可观测性(metrics / traces / logs 联动) | Prometheus + Grafana + Tempo + Loki 全套 |
| IaC 完整版(服务器、网络、数据库都代码化) | Terraform / Pulumi |
| 安全合规(镜像扫描 / 准入控制) | Trivy / OPA / Falco |
这些是基础篇之后的进阶内容——你什么时候需要解决「集群」「弹性」「跨区域」,再继续向上走。多数个人 / 中小项目,本篇已足够。
六、 回到开发者的「最低必要能力」
如果你只想用最少的时间让项目上生产,下面这条路径覆盖 90% 场景:
01 看一眼 Nginx 配置
05 学会 docker run
07 复制 GitHub Actions Pages 模板如果是全栈项目:
01 Nginx 静态代理
02 手动部署跑通一遍
03 git push 源码
05 docker run 单容器
07 GitHub Actions 自动构建 + 部署
08 docker-compose 起多服务如果是有复杂后端:
01-04(手动部署 + 后端栈)
05 容器化
06 Jenkinsfile 流水线
07(可选 Actions)
08 docker-compose 多服务七、 给读者的建议
- 不要一上来就用最复杂的方案——K8s / Argo CD / Terraform 是进阶工具,先把 01-08 走通。
- 每篇都动手做一遍——「跑通一次」>「读十遍」。基础篇的核心是 muscle memory。
- 遇到问题先看 04 三类运维痛点——服务器脏 / 资源争抢 / 网络不对等是常见根因。
- 保持习惯——任何运维脚本(systemd unit / nginx conf / Jenkinsfile)都该在 Git 仓库里。
- 理解「声明式」思想——Jenkinsfile、docker-compose.yml、IaC 都是同一思想的不同体现。
八、 下一篇预告
基础篇之后,实战篇会把这些工具组合到真实项目里——从 0 到部署一套完整的多服务应用(含前端 + 后端 + DB + 监控)。届时你将看到 01-08 的所有知识如何在一个项目里组合协作。
参考
- 本系列全部 8 篇的链接:见侧栏「SRE 运维 / DevOps / 基础篇」
- 渐进式 DevOps 总纲:00 | 渐进式运维导读