GitLab CI/CD #
什么是GitLab CI/CD? #
GitLab CI/CD是GitLab内置的持续集成、持续交付和持续部署平台。它通过.gitlab-ci.yml文件配置,自动执行构建、测试和部署流程,是现代DevOps工作流的核心组件。
GitLab CI/CD的优势 #
| 优势 | 说明 |
|---|---|
| 内置集成 | 与GitLab代码仓库无缝集成,无需额外配置 |
| 配置即代码 | 使用YAML文件定义流水线,版本化管理 |
| 自动扩展 | 支持Kubernetes自动扩缩Runner |
| 多平台支持 | Linux、Windows、macOS、Docker、Kubernetes |
| 免费使用 | GitLab.com免费提供CI/CD功能 |
| 可视化界面 | 直观的流水线图和作业详情 |
文档结构 #
本指南按以下结构组织,适合初学者按顺序学习:
1. 基础入门 #
| 主题 | 描述 | 文档链接 |
|---|---|---|
| GitLab CI简介 | 概念介绍、核心组件、应用场景 | gitlab-ci-intro.md |
| 第一个流水线 | Hello World、创建第一个Pipeline | first-pipeline.md |
| .gitlab-ci.yml详解 | 配置文件结构、语法规范 | gitlab-ci-yml.md |
| 作业与阶段 | Jobs、Stages概念与配置 | jobs-stages.md |
2. 流水线基础 #
| 主题 | 描述 | 文档链接 |
|---|---|---|
| 流水线类型 | Pipeline类型、触发方式 | pipeline-types.md |
| 变量与环境 | Variables定义、环境变量使用 | variables.md |
| 缓存与制品 | Cache、Artifacts配置 | cache-artifacts.md |
| 条件与规则 | only/except、rules配置 | conditions-rules.md |
3. Runner管理 #
| 主题 | 描述 | 文档链接 |
|---|---|---|
| Runner基础 | Runner概念、类型、注册 | runner-basics.md |
| Runner配置 | 配置文件、标签、执行器 | runner-configuration.md |
| Runner高级 | 自动扩缩、监控、维护 | runner-advanced.md |
4. 高级特性 #
| 主题 | 描述 | 文档链接 |
|---|---|---|
| 模板与继承 | include、extends、模板复用 | templates-inheritance.md |
| 安全与权限 | 安全扫描、权限控制、密钥管理 | security-permissions.md |
| 父子流水线 | Parent-Child Pipeline、多项目流水线 | parent-child-pipeline.md |
| 性能优化 | 并行执行、缓存优化、构建加速 | performance-optimization.md |
5. 实战案例 #
| 主题 | 描述 | 文档链接 |
|---|---|---|
| Node.js项目CI/CD | npm构建、测试、部署 | nodejs-cicd.md |
| Docker集成 | 镜像构建、推送、部署 | docker-integration.md |
| Kubernetes部署 | K8s集群部署、滚动更新 | kubernetes-deployment.md |
学习建议 #
初学者路线 #
text
基础入门 → 流水线基础 → Runner管理
进阶路线 #
text
高级特性 → 实战案例 → 生产实践
GitLab CI/CD架构概览 #
text
┌─────────────────────────────────────────────────────────────┐
│ GitLab Server │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 代码仓库 │ │ CI/CD │ │ 镜像 │ │ 制品 │ │
│ │ (Git) │ │ 配置 │ │ Registry│ │ Registry│ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Pipeline Scheduler │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────┼─────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Runner 1 │ │ Runner 2 │ │ Runner 3 │
│ (Shell) │ │ (Docker) │ │ (K8s) │
└──────────┘ └──────────┘ └──────────┘
GitLab CI vs 其他CI/CD工具 #
| 特性 | GitLab CI | GitHub Actions | Jenkins | CircleCI |
|---|---|---|---|---|
| 部署方式 | 内置/自托管 | 云托管 | 自托管 | 云托管 |
| 配置方式 | YAML | YAML | Groovy/YAML | YAML |
| 学习曲线 | 低 | 低 | 高 | 低 |
| 免费使用 | 完全免费 | 有限额度 | 完全免费 | 有限额度 |
| 容器支持 | 原生支持 | 原生支持 | 插件支持 | 原生支持 |
| 集成度 | 高(GitLab) | 高(GitHub) | 中 | 中 |
学习资源 #
- 官方文档:GitLab CI/CD Documentation
- 配置参考:GitLab CI/CD YAML Reference
- 社区论坛:GitLab Community Forum
- 推荐书籍:《GitLab CI/CD实战》、《DevOps实践指南》
开始学习 #
准备好了吗?让我们从 GitLab CI简介 开始你的CI/CD学习之旅!
最后更新:2026-03-28