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

GitLab CI缓存文件何时上传?任务失败时如何确保缓存填充?

GitLab CI缓存上传时机与失败时填充缓存的解决方案

缓存上传时机

GitLab CI默认仅在任务成功完成(脚本返回0退出码)时,才会将配置路径下的文件上传至缓存服务器。若任务因脚本报错返回非零退出码,缓存上传步骤会被直接跳过,这就是你遇到失败时缓存未填充的原因。

实现失败时仍填充缓存的方法

方法1:使用cache:when: always(推荐,GitLab 13.5+)

在缓存配置中添加when: always,强制GitLab CI无论任务成功或失败,都在任务结束时上传缓存。修改后的完整配置如下:

dependency_report:
  script: mvn org.owasp:dependency-check-maven:12.1.3:check -DfailBuildOnAnyVulnerability
  cache:
    key: nvd_db
    paths:
      - .m2/repository/org/owasp/dependency-check-data/*/nvdcache/
    when: always

方法2:拆分任务(兼容低版本GitLab)

如果你的GitLab版本低于13.5,可将缓存生成与质量检查拆分为两个独立任务:

  1. 第一个任务专门生成并上传NVD缓存(确保任务总是成功)
  2. 第二个任务依赖缓存执行质量检查,失败不影响缓存的存在

配置示例:

generate_nvd_cache:
  script: mvn org.owasp:dependency-check-maven:12.1.3:check
  cache:
    key: nvd_db
    paths:
      - .m2/repository/org/owasp/dependency-check-data/*/nvdcache/
    policy: push

dependency_report:
  script: mvn org.owasp:dependency-check-maven:12.1.3:check -DfailBuildOnAnyVulnerability
  cache:
    key: nvd_db
    paths:
      - .m2/repository/org/owasp/dependency-check-data/*/nvdcache/
    policy: pull
  needs: [generate_nvd_cache]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 14:55:04