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

GitLab CI中如何在!reference标签内使用变量?

问题原因

GitLab CI的!reference标签是在配置解析阶段就被处理的,而你定义的USED_TEMPLATE_NAME变量要到流水线运行阶段才会被替换成实际值。解析时$USED_TEMPLATE_NAME还只是字符串本身,不是.setup,所以GitLab找不到对应的引用结构,才会报错。

解决方案

根据你的需求,有几种可行的替代办法:

方案1:直接写死模板名(最简单)

如果模板名称不需要动态切换,直接把.setup写到!reference里即可:

include:
  - local: configs.yml

test:
  script:
    - !reference [.setup, script]
    - echo running my own command

方案2:用extends继承模板

要是你想复用整个模板的配置,再追加自定义命令,可以用extends:

include:
  - local: configs.yml

test:
  extends: .setup
  script:
    - !reference [.setup, script]
    - echo running my own command

如果需要覆盖模板原有的script,直接写新命令即可,无需引用原脚本。

方案3:动态切换模板(适合参数化场景)

如果确实要根据变量选择不同模板,可以结合rules和多任务实现:

include:
  - local: configs.yml

test-setup:
  rules:
    - if: $USED_TEMPLATE_NAME == ".setup"
  script:
    - !reference [.setup, script]
    - echo running my own command

test-another-setup:
  rules:
    - if: $USED_TEMPLATE_NAME == ".another-setup"
  script:
    - !reference [.another-setup, script]
    - echo running my own command

运行流水线时,通过传递USED_TEMPLATE_NAME=.setup这类变量,就能触发对应的任务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 01:51:01