GitLab CI/CD 由两部分组成:

  • .gitlab-ci.yml:放在仓库根目录的声明式配置,定义流水线做什么
  • Runner:独立进程/容器,负责拉取并执行 Job;GitLab 服务端只负责解析与调度

执行链路:推代码 → GitLab 解析 yml → 创建 Pipeline → 按 Stage 顺序把 Job 分发给匹配的 Runner → Runner 用指定 Executor 执行脚本 → 回传日志与产物。

核心概念

概念说明
Pipeline一次完整的自动化流程,由若干 Stage 组成,是顶层执行单元
Stage阶段(如 build/test/deploy),同 Stage 的 Job 并行,不同 Stage 默认串行
Job最小执行单元,本质是一组 shell 脚本 + 运行环境声明
Runner执行 Job 的 agent,分 instance(shared)/ group / project 三级作用域
ExecutorRunner 的执行后端:shell / docker / kubernetes 等
DAG用 needs 打破 Stage 边界,按 Job 级依赖提前并行

Pipeline 四种结构:

  1. 线性:Stage 串行,最常用
  2. DAG:needs 指定 Job 级依赖,更早开始执行
  3. 父子:一个 Job 用 trigger: include: 拉起子流水线
  4. 多项目:trigger: project: 触发另一个仓库的流水线

触发方式

来源CI_PIPELINE_SOURCE 值
代码推送push
Merge Requestmerge_request_event
Tagtag
定时调度schedule
Web 手动web
APIapi
上游流水线触发trigger / pipeline

快速上手:最小可用配置

仓库根目录创建 .gitlab-ci.yml:

stages:
  - test
  - build
 
unit-test:
  stage: test
  image: golang:1.24
  script:
    - go vet ./...
    - go test ./...
 
build-binary:
  stage: build
  image: golang:1.24
  script:
    - go build -o app ./cmd/app
  artifacts:
    paths:
      - app
    expire_in: 1 week

提交后在 Build → Pipelines 查看执行状态。前提:项目有可用 Runner(共享 Runner 或自行注册的,见 cicd-runner)。

UI 导航速查

要看什么路径
流水线列表项目 → Build → Pipelines
Job 日志Pipeline 详情 → 点 Job
DAG 依赖图Pipeline 详情右上角 DAG
在线编辑/校验配置Build → Pipeline editor
CI/CD 变量Settings → CI/CD → Variables
Runner 管理Settings → CI/CD → Runners
环境与部署记录Operate → Environments

手册分册导航

相关

  • git-worktree:本地多分支并行开发,与 CI 分支流水线配合