GitLab 核心概念
内容:为什么需要 GitLab -> 核心对象 -> 底层架构 -> CI/CD 理论模型 -> 权限与治理 -> 企业级抽象
一句话定义:
GitLab 是一个以 Git 仓库为中心,将 代码 -> 流程 -> 权限 -> 自动化 -> 部署 -> 反馈 全部打通的 一体化 DevOps 平台。
它解决的不是「存代码」,而是:
如何让代码在可控、安全、可审计的前提下,稳定、高频地流向生产环境。
GitLab 的所有功能,最终都围绕 5 个核心对象 运转:
Repository(代码)
│
├─ Commit(提交)
│
├─ Branch / Tag(分支 / 标签)
│
├─ Merge Request(变更入口)
│
├─ Pipeline(自动化流程)
│
└─ Environment(运行环境)
你理解了这 5 个对象,就理解了 GitLab 的 80%。
本质:
- 一个 Git 仓库
- 包含源码、历史、分支、标签
GitLab 在 Git 之上增加了:
- 权限
- 审计
- CI/CD
- 可视化管理
📌 认知重点:
- GitLab ≠ Git
- GitLab = Git + 管理 + 自动化
- 最小变更单元
- 是 CI/CD 的真正触发源
每一个 commit:
- 都可能触发 Pipeline
- 都有作者、时间、diff、SHA
- 都可追溯、可审计
📌 关键理解:
GitLab 的自动化是 commit 驱动 的,而不是人驱动。
Branch(分支)
- 用于开发流程
- 决定 CI 是否执行、如何执行
典型分支:
main / master
develop
feature/*
hotfix/*
Tag(标签)
- 通常表示 一次发布
- CI 中常用于「正式发布触发点」
rules:
- if: '$CI_COMMIT_TAG'
📌 认知模型:
- 分支 = 流程
- 标签 = 版本 / 发布点
这是 GitLab 的“控制中枢”
MR 本质是:
一次受控的变更申请
它绑定了:
- 代码 diff
- CI Pipeline
- Reviewer
- 审批规则
- 安全扫描
- 合并策略
📌 核心原则:
没有 MR,就不应该进入主干。
Pipeline 是 GitLab 自动化的核心执行模型。
它是:
- 由 .gitlab-ci.yml 描述
- 由 commit / MR / tag 触发
- 由 Runner 执行
结构模型:
Pipeline
├─ Stage
│ ├─ Job
│ ├─ Job
├─ Stage
│ ├─ Job
📌 Pipeline 本质:
将「人为流程」转化为「机器可执行流程」。
- Stage:逻辑阶段(顺序)
- Job:具体执行单元(并行)
📌 重要规则:
- Stage 顺序执行
- 同 Stage Job 并行执行
- Job 失败 -> Stage 失败 -> Pipeline 失败
Runner 是 CI/CD 的“工人”。
- GitLab:调度与管理
- Runner:真正执行命令
Runner 本身是 无状态的执行节点。
📌 关键理解:
Runner 不“属于”项目,它只是接活干。
| 概念 | 本质 | 目的 |
|---|---|---|
| Artifacts | 构建结果 | 传递、下载 |
| Cache | 中间依赖 | 加速 |
📌 认知模型:
- Artifacts 是「结果」
- Cache 是「过程优化」
Environment 抽象的是:
代码运行的真实世界
如:
- dev
- test
- staging
- production
GitLab 能:
- 记录部署历史
- 标记当前版本
- 支持回滚
GitLab CI 的底层思想是:
代码变更
↓
自动验证(CI)
↓
自动构建
↓
自动交付(CD)
📌 核心思想:
不相信人,只相信自动化。
角色是 能力集合,不是人:
- Guest
- Reporter
- Developer
- Maintainer
- Owner
📌 核心原则:
权限永远最小化。
Group
├─ SubGroup
│ ├─ Project
│ ├─ Project
用于:
- 权限继承
- 资源隔离
- CI Runner 复用
用于:
- 防止误操作
- 强制 MR 流程
- 保护生产代码
📌 生产环境必须 Protected
User
↓
Nginx
↓
GitLab Rails
↓
Gitaly ─ Git Repo
↓
PostgreSQL / Redis
↓
Runner(CI 执行)
📌 关键点:
- Git 操作不在 Rails 中执行
- Gitaly 是性能与扩展核心
- CI 执行与 GitLab 解耦
- Pipeline as Code
- Infrastructure as Code
- Policy as Code
- 安全前移
- 测试前移
- 质量前移
- Git 是唯一事实来源
-
❌ GitLab = GitHub 私有版
-
❌ CI = 写几个脚本
-
❌ Runner 属于项目
-
❌ Pipeline 是顺序执行
-
❌ Cache 和 Artifacts 是一回事
-
✅ GitLab 是流程治理平台
-
✅ CI 是工程化能力
-
✅ Runner 是独立执行节点
-
✅ Job 可并行
-
✅ Cache ≠ Artifacts
GitLab 的核心价值,不在于“工具”,而在于:
把软件交付这件事,从“经验驱动”,变成“规则 + 自动化驱动”。