GitLab CI 速查
共 26 条 GitLab CI 语法与命令,覆盖基本结构、触发与依赖、缓存与产物、变量、Runner 五组场景。yml 片段写成多行便于阅读,点击即可复制完整片段。
基本结构
.gitlab-ci.yml 的骨架。
| 关键字 / 命令 | 说明 |
|---|---|
| 声明流水线阶段及其顺序 | |
| 定义一个作业及其所属阶段与脚本 | |
| 指定作业使用的容器镜像 | |
| 每个作业前统一执行的命令 | |
| 每个作业后执行的命令(失败也会执行) | |
| 继承一个模板作业 / 片段,减少重复 |
触发与依赖
控制作业何时运行、依赖关系。
| 关键字 / 命令 | 说明 |
|---|---|
| 按条件决定是否运行(推荐替代 only/except) | |
| 旧写法:只在指定分支 / 标签运行 | |
| 手动触发(如生产部署) | |
| 声明依赖,可让作业不按阶段顺序提前执行(DAG) | |
| 只下载指定作业的产物 | |
| 该作业失败不影响流水线成功 | |
| 指定由哪个(带标签的)Runner 执行 |
缓存与产物
加速构建与传递文件。
| 关键字 / 命令 | 说明 |
|---|---|
| 按分支缓存依赖目录,加速后续构建 | |
| 保存产物供后续阶段或下载 | |
| 产物保留时间 | |
| 上传测试报告,在 MR 里展示 |
变量
配置与密钥。
| 关键字 / 命令 | 说明 |
|---|---|
| 在 yml 中定义变量 | |
| 内置变量:提交哈希 / 分支名 | |
| 在界面配置受保护变量(密钥不要写进 yml) | |
| 标记部署环境,便于追踪与回滚 |
Runner
注册与管理执行器。
| 关键字 / 命令 | 说明 |
|---|---|
| 交互式注册一个新的 Runner | |
| 列出已注册的 Runner | |
| 前台运行 Runner(调试用) | |
| 本地执行某个作业(需在仓库目录) | |
| 重启 Runner 服务 |
使用说明
GitLab CI 速查:.gitlab-ci.yml 结构、触发与依赖、缓存产物、变量与 Runner;支持搜索与分类筛选,yml 片段可整段复制。
- 按用途点分类:基本结构、触发与依赖、缓存与产物、变量、Runner。
- yml 片段以多行展示,点「关键字 / 命令」列即可复制完整片段到 .gitlab-ci.yml。
- 小项目先掌握 stages + job + script + artifacts 即可跑通;再按需加 rules 与 cache。
- Runner 用 gitlab-runner register 注册,或在界面配置。
常见问题
- rules 和 only/except 用哪个?
- 优先用 rules:它语法更清晰、支持复杂条件(if / changes / exists),是官方推荐写法;only/except 属旧语法,新项目不必再用。
- cache 和 artifacts 有什么区别?
- cache 用于「加速」(如缓存 node_modules,跨流水线复用,不保证一定命中);artifacts 用于「传递给后续阶段或下载」(如构建产物、测试报告),会被保存到流水线里。
- 密钥能写进 yml 吗?
- 不能。应在「Settings → CI/CD → Variables」里配置受保护变量(可设为 masked / protected),yml 里通过环境变量引用,避免密钥泄露到仓库与日志。
- needs 有什么用?
- needs 让作业不必等前面所有阶段完成,只要有它依赖的作业跑完就能开始(DAG 流水线),能显著缩短总时长。