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

如何在.gitlab-ci.yml中正确使用GitLab CI模板里的锚点脚本?

在GitLab CE 14.6.0这个版本里,你遇到的问题是因为YAML锚点的作用域限制——这个版本的GitLab CI不会把include进来的文件里的锚点(比如你定义的&test)暴露到主配置文件中,所以主配置里找不到*test这个别名。下面给你两种可行的解决办法:

方法一:使用extends继承job模板

把你的模板文件修改为一个隐藏的job模板(前缀加.表示隐藏),而不是单独的锚点脚本:

/templates/test-template.yml内容:

.test-job-template:
  script:
    - echo "hello"

然后在主.gitlab-ci.yml里通过extends继承这个模板:

include: '/templates/test-template.yml'
example-stage:
  extends: .test-job-template

这种方式是GitLab CI中复用job配置的标准做法,兼容性很好,完全适配你的14.6版本。

方法二:使用!reference引用特定配置项

GitLab 13.10及以上版本支持!reference语法,可以直接引用其他job里的特定字段(比如script)。同样先调整模板文件为隐藏job:

/templates/test-template.yml内容:

.test-script-source:
  script:
    - echo "hello"

然后主配置里用!reference来引用它的script部分:

include: '/templates/test-template.yml'
example-stage:
  script:
    - !reference [.test-script-source, script]

这种方式更灵活,如果只需要复用script而不是整个job的配置,这个方法很合适。

需要注意的是,你原来尝试的跨文件锚点引用方式,要到GitLab 15.0及以上版本才被支持,所以在14.6里只能用上面两种方法解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 01:49:07