用途:在优化 GitLab CI/CD 流水线的性能、可靠性或可维护性时使用,提供流水线优化与组织模式。
主要能力与用法:
- 流水线优化。用 needs 构成 DAG 实现跨阶段并行,例如 test:frontend 设置 needs: ["build:frontend"],deploy 同时 needs 两个测试作业;用 parallel:matrix 并行多套件,如 SUITE: [unit, integration, e2e] 配合 npm run test:$SUITE;为可取消作业加 interruptible: true,生产部署设 interruptible: false 避免被取消。
- 配置组织。用 include: local 把 .gitlab-ci.yml 拆成 build.yml、test.yml、deploy.yml 等;用 YAML 锚点定义 .node_template 复用 image、before_script 与 cache(key: ${CI_COMMIT_REF_SLUG}),或用 extends 继承 .base_job。
- 资源管理。用 resource_group 限制 staging、production 部署并发;用 tags 如 high-memory、docker 指定 Runner。
- 错误处理。retry 可设 max 与 when(runner_system_failure、stuck_or_timeout_failure、script_failure);allow_failure 可整体允许失败,也可用 exit_codes 只允许特定退出码。
- 安全。生产部署用 rules 限定 $CI_COMMIT_BRANCH == "main" 并 when: manual,配合 environment;使用受保护、掩码的 CI/CD 变量,限定 $CI_COMMIT_REF_PROTECTED == "true"。
- 监控调试。脚本内 set -x 开启调试输出,after_script 打印 $CI_JOB_STATUS;可用流水线与覆盖率徽章。
常见反模式:顺序执行全部作业、下载全部 artifacts、每个作业重装 node_modules、硬编码密钥、单一庞大的 .gitlab-ci.yml;对应做法是 needs 并行、dependencies 限制下载、cache 配合锁文件键、受保护变量、拆分多文件。
限制:资料未提供具体版本要求、性能提升数据及平台差异说明。