我有一个gitlab作业,可以下载一堆依赖项并将它们填充到缓存中(如有必要),然后还有一堆使用该缓存的作业。我注意到,在使用作业结束时,即使他们没有进行任何更改,他们也花了很多时间来创建新的缓存。
是否可以让它们仅充当消费者?只读?
cache:
paths:
- assets/
configure:
stage: .pre
script:
- conda env update --prefix ./assets/env/base -f ./environment.yml;
- source activate ./assets/env/base
- bash ./download.sh
parse1:
stage: build
script:
- source activate ./assets/env/base;
- ./build.sh -b test -s 2
artifacts:
paths:
- build
parse2:
stage: build
script:
- source activate ./assets/env/base;
- ./build.sh -b test -s 2
artifacts:
paths:
- build
答案 0 :(得分:0)
答案 1 :(得分:0)
在非常详细的.gitlab-ci.yml
文档中,是对称为policy
的cache
设置的引用。 GitLab缓存具有push
(又名write
)和pull
(又名read
)的概念。默认情况下,它设置为pull-push
(开头是read
,结尾是write
)。
如果您知道该作业不会更改缓存的文件,则可以通过在作业规范中设置
policy: pull
来跳过上载步骤。通常,这会在较早的阶段与普通的缓存作业结合在一起,以确保不时更新缓存:
几乎可以描述这种情况:作业configure
更新了缓存,而parse
作业没有更改缓存。
在使用作业中,添加:
cache:
paths:
- assets/
policy: pull
为清楚起见,在全局设置中明确显示该内容可能不会受到损害:
cache:
paths:
- assets/
policy: pull-push