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

GitLab CI继承模板时如何正确重写清空job的artifacts配置

GitLab CI 继承模板时清空artifacts的正确方法

为什么artifacts: []不生效

GitLab CI 处理extends关键字的配置继承时,对哈希类型的配置默认执行深度合并,而非全量替换。
基础模板中的artifacts是包含expire_in、reports、paths属性的哈希结构,写artifacts: []属于空数组,类型和父级配置不匹配,会被合并逻辑直接忽略,父级的artifacts规则会完整继承下来,自然无法达到清空效果。

可直接使用的生效方案

方案1(推荐,适配GitLab 13.0+全版本):用inherit显式关闭artifacts继承

GitLab原生提供了inherit关键字用来精确控制从父作业继承的配置项,直接声明不继承artifacts即可,不需要额外写空的artifacts配置:

include: 'base.yaml'

build:child:
  extends: [build]
  before_script: []
  script:
    - *run-nuget-restore
    - *build-release
  inherit:
    artifacts: false

该配置下build:child作业既不会继承父模板的任何artifacts规则,自身也没有定义artifacts,运行时不会生成、传递任何制品。

方案2(兼容老版本GitLab):显式覆盖artifacts的所有子属性

如果使用的是13.0以前的GitLab版本(对inherit的细粒度控制支持不完善),可以显式将父级artifacts下的所有属性置空,通过哈希合并覆盖原有配置:

include: 'base.yaml'

build:child:
  extends: [build]
  before_script: []
  script:
    - *run-nuget-restore
    - *build-release
  artifacts:
    expire_in: null
    reports: {}
    paths: []
    exclude: []

注意:该方案需要把父级artifacts下出现的所有键都显式置空,漏写的属性依然会从父级继承生效,维护成本更高,仅作兼容场景使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 03:42:31