使用准则
- 如果第二个
job
的依赖不存在,job
也能继续运行, 则使用cache
- 如果第二个
job
的依赖必须存在, 则 使用artifacts
主要区别
cache
不一定命中,artifacts
肯定命中artifacts
可以设置自动过期时间,过期自动删除,cache
不会自动清理- 默认
artifacts
会自动在不同的stage
中传输;artifacts
会先传到GitLab
服务器, 然后需要时再重新下载, 所以这部分也可以在GitLab
下载和浏览
使用场景
- 如果 第二个
job
依赖 第一个job
生成的内容, 使用cache
通常会失败(因为不保证cache
存在), 这时应当使用artifacts
, 在第二个job
使用dependencies
属性, 让第二个job
使用第一个job
中的内容 - 如果几个
jobs
都需要安装相同的依赖, 可以使用cache
, 可以加快依赖的安装进度, 即使cache
不存在,job
也不会失败
artifacts
使用 demo
1 | image: docker:latest |
参考文档
Pipeline - Failed to extract cache
GitLab-CI中的artifacts使用研究
文章若有纰漏请大家补充指正,谢谢~~