Gitlab CI/CD支持使用.gitlab-ci.yml中的cache键的caching between CI jobs,它只能缓存项目目录中的文件,所以如果你还想缓存cargo注册表,你需要使用环境变量CARGO_HOME。 您可以在顶层添加一个cache设置,以便为本身没有cache设置的所有作业设置缓存,也可以将其添加到作业定义之下,以便为此类作业设置缓存配置。 有关所有可能的配置选项,请参见关键字参考。 下面是一个示例配置,它缓存货物注册表和临时构建文件,并将clippy作业配置为仅使用该高速缓存,而不写入缓存:
stages:
- test
cache: &global_cache # Default cache configuration with YAML variable
# `global_cache` pointing to this block
key: ${CI_COMMIT_REF_SLUG} # Share cache between all jobs on one branch/tag
paths: # Paths to cache
- .cargo/bin
- .cargo/registry/index
- .cargo/registry/cache
- target/debug/deps
- target/debug/build
policy: pull-push # All jobs not setup otherwise pull from
# and push to the cache
variables:
CARGO_HOME: ${CI_PROJECT_DIR}/.cargo # Move cargo data into the project
# directory so it can be cached
# ...
test:
stage: test
image: rust:latest
script:
- cargo test
# only for demonstration, you can remove this block if not needed
clippy:
stage: test
image: rust:latest
script:
- cargo clippy # ...
only:
- master
needs: []
cache:
<<: *global_cache # Inherit the cache configuration `&global_cache`
policy: pull # But only pull from the cache, don't push changes to it
1条答案
按热度按时间d8tt03nd1#
Gitlab CI/CD支持使用
.gitlab-ci.yml
中的cache
键的caching between CI jobs,它只能缓存项目目录中的文件,所以如果你还想缓存cargo注册表,你需要使用环境变量CARGO_HOME
。您可以在顶层添加一个
cache
设置,以便为本身没有cache
设置的所有作业设置缓存,也可以将其添加到作业定义之下,以便为此类作业设置缓存配置。有关所有可能的配置选项,请参见关键字参考。
下面是一个示例配置,它缓存货物注册表和临时构建文件,并将
clippy
作业配置为仅使用该高速缓存,而不写入缓存:如果要使用CI中的
cargo publish
,则应将.cargo
添加到.gitignore
文件中。否则,cargo publish
将显示一个错误,指出项目目录中存在未提交的目录.cargo
。