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,可将缓存生成与质量检查拆分为两个独立任务:
- 第一个任务专门生成并上传NVD缓存(确保任务总是成功)
- 第二个任务依赖缓存执行质量检查,失败不影响缓存的存在
配置示例:
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
相关产品推荐
相关产品推荐

