06. CI/CD 到底是什么?GitLab 流水线架构从概念到实战
「GitLab」系列已发布: 00. GitLab 不只是代码托管:一套 DevOps 平台的 6 大核心能力 | 01. GitLab 怎么装最省心?Omnibus/Docker/K8s 三种姿势 | 02. 装完 GitLab 先配啥?管理员视角的初始化设置清单 | 03. GitLab 角色搞不清?Member/Maintainer/Owner 权限全解 | 04. 从零建好第一个 GitLab 项目:权限、变量、CI 配置入门 | 05. GitLab MR 代码审查:Code Review 最佳实践 | 06. CI/CD 到底是什么?GitLab 流水线架构从概念到实战(本文) | 07. Runner 装不好?GitLab Runner 单机/分布式/高可用全攻略
Pipeline、Stage、Job、Runner 这些概念绕晕人?本文用一张架构图讲清 GitLab CI/CD 的运作原理,从概念直通实战。
前置条件
已完成安装部署(第 01 篇),对 GitLab 平台有基本了解。这篇是 CI/CD 系列的开篇,侧重概念和架构。
一、CI/CD 是什么
持续集成(Continuous Integration)+ 持续交付/部署(Continuous Delivery/Deployment)是现代软件开发的核心实践。
1.1 核心概念
flowchart LR subgraph CI["持续集成 CI"] A[代码提交] --> B[自动构建] B --> C[自动测试] C --> D{测试通过?} D -->|是| E[合并代码] D -->|否| F[修复问题] F --> A end subgraph CD["持续交付/部署"] E --> G[自动部署到 staging] G --> H{人工审批?} H -->|是| I[自动部署到 production] H -->|否| I I --> J[监控反馈] end
1.2 关键术语
| 术语 | 说明 |
|---|---|
| Pipeline | 一次完整的 CI/CD 流程 |
| Job | Pipeline 中的单个任务 |
| Stage | Job 的逻辑分组(如 build、test、deploy) |
| Runner | 执行 Job 的引擎 |
| Artifact | Job 的输出产物 |
| Cache | 跨 Job 共享的缓存数据 |
二、GitLab CI/CD 架构
2.1 核心组件
graph TB subgraph "开发者" Dev[开发者] end subgraph "GitLab" Repo[代码仓库] Runner[GitLab Runner] API[GitLab API] end subgraph "执行环境" Docker[Docker 容器] VM[虚拟机] K8s[Kubernetes] end Dev -->|push 代码| Repo Repo -->|触发 Pipeline| API API -->|调度| Runner Runner -->|执行 Job| Docker Runner -->|执行 Job| VM Runner -->|执行 Job| K8s
2.2 Pipeline 执行流程
sequenceDiagram participant Dev as 开发者 participant GitLab as GitLab Server participant Runner as GitLab Runner participant Docker as Docker 容器 Dev->>GitLab: push 代码到仓库 GitLab->>GitLab: 解析 .gitlab-ci.yml GitLab->>Runner: 调度匹配的 Job Runner->>Docker: 启动容器 Docker->>Docker: 执行脚本 Docker->>Runner: 返回执行结果 Runner->>GitLab: 更新 Job 状态 GitLab->>Dev: 发送通知
三、.gitlab-ci.yml 入门
3.1 最简单的配置
# .gitlab-ci.yml
stages: # 定义阶段
- build
- test
- deploy
build_job: # 构建阶段
stage: build
script:
- echo "编译代码"
- make build
test_job: # 测试阶段
stage: test
script:
- echo "运行测试"
- make test
deploy_job: # 部署阶段
stage: deploy
script:
- echo "部署到生产"
- make deploy
only:
- main # 只在 main 分支部署
3.2 关键指令
| 指令 | 说明 |
|---|---|
stages |
定义 Pipeline 的阶段顺序 |
script |
Job 执行的命令 |
image |
使用的 Docker 镜像 |
before_script |
执行 script 前的准备命令 |
after_script |
执行 script 后的清理命令 |
rules |
条件判断是否执行 Job |
only/except |
分支过滤 |
cache |
缓存配置 |
artifacts |
产物配置 |
needs |
Job 依赖关系 |
environment |
部署环境 |
四、Pipeline 状态
flowchart LR A[无 Pipeline] --> B[created] B --> C[pending] C --> D{Runner 接受?} D -->|否| C D -->|是| E[running] E --> F{执行结果?} F -->|成功| G[success] F -->|失败| H[failed] F -->|取消| I[canceled] F -->|跳过| J[skipped] H --> K[手动重试] K --> E
五、常见问题
5.1 Pipeline 不触发
- 检查
.gitlab-ci.yml是否存在且语法正确 - 检查触发的分支是否匹配
rules或only - 检查是否有 Runner 在线且匹配标签
5.2 Job 卡在 pending
- 检查 Runner 是否在线
- 检查 Runner 的 tag 是否与 Job 匹配
- 检查 Runner 的并发限制
5.3 构建失败
- 查看详细日志
- 检查依赖是否安装
- 检查环境变量是否正确
六、文章引用
📌 本文首发于微信公众号 【运维知识点滴】——专注运维实战干货,微信搜索“运维知识点滴”或扫下方二维码关注,更新不迷路。
| 微信公众号【运维知识点滴】 | 微信小程序【A5单据合并&大试卷拆分转A4打印】 |
|---|---|
![]() |
![]() |
| 运维实战干货 · 关注追更 | Word 转 PDF · 试卷/发票打印神器 · 免费 |
💡 小程序【A5单据合并&大试卷拆分转A4打印】是干嘛的? 一个 Word 转 PDF 的打印神器,专治“文档版式和打印机对不上”:
- A3 试卷打不出来? 学校发的电子版试卷多是 A3,家用打印机只吃 A4——上传 Word 一键转换:可缩到一页 A4(页数不变),也可对半拆成两张 A4(1:1 原大、字更清晰),两种模式自选;
- 版式不乱:真实渲染引擎原样转换、绝不重排内容,转出的 PDF 和原 Word 排版一致,公式/表格/图片不跑版;
- 两张 A5 单据拼一张 A4:出租车票、火车票等报销凭证拼版后,一次打印、整齐粘贴;
- 隐私省心:无需注册,转换结果留存 5 天、最多下载 5 次即自动删除,不留任何历史记录;
- 微信扫码即用,免费、免安装,支持 doc / docx(≤50MB)。
上一篇:05. GitLab MR 代码审查:Code Review 最佳实践 | 下一篇:07. Runner 装不好?GitLab Runner 单机/分布式/高可用全攻略

