You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取GitLab CI文件中各阶段通用代码以优化配置?

GitLab CI 通用代码提取与复用方案

提取通用代码的两种常用方式

1. 使用YAML锚点直接复用脚本块

YAML原生支持锚点语法,可以把重复的脚本片段定义成锚点,在需要的地方直接引用,是最简洁的复用方式:

stages:
  - lint
  - publish

# 定义通用脚本锚点
.default_scripts: &default_scripts
  - command1
  - command2
  - command3

lint:example1
  stage: lint
  script:
    - *default_scripts  # 引用通用脚本
    - command4

publish:docker-image
  stage: publish
  script:
    - *default_scripts  # 引用通用脚本
    - command5

2. 使用extends关键字创建模板Job

如果需要复用的不只是脚本,还有其他Job配置(比如变量、缓存等),可以用extends定义模板Job,再通过!reference引用模板内的脚本片段并追加自定义命令:

stages:
  - lint
  - publish

# 定义隐藏模板Job(前缀.表示不会被单独执行)
.template_job:
  script:
    - command1
    - command2
    - command3

lint:example1
  stage: lint
  extends: .template_job
  script:
    - !reference [.template_job, script]  # 引用模板的脚本
    - command4

publish:docker-image
  stage: publish
  extends: .template_job
  script:
    - !reference [.template_job, script]  # 引用模板的脚本
    - command5

GitLab CI是否支持类似函数的功能?

GitLab CI没有传统编程语言里的“函数”语法,但可以通过以下方式实现类似逻辑复用:

  • 上述的YAML锚点和extends模板,属于CI配置内的逻辑复用;
  • 把通用脚本封装成独立的shell脚本文件(比如scripts/common.sh),在CI Job里直接调用这个脚本,这种方式更接近“函数”的封装思路,适合复杂的通用逻辑:
stages:
  - lint
  - publish

lint:example1
  stage: lint
  script:
    - ./scripts/common.sh  # 调用通用脚本文件
    - command4

publish:docker-image
  stage: publish
  script:
    - ./scripts/common.sh  # 调用通用脚本文件
    - command5

内容的提问来源于stack exchange,提问作者Ganesh Shinde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 14:45:46