我正在尝试编译和测试C ++项目,并使用ccache加快构建时间。
我的.gitlab-ci.yml
允许使用Gitlab共享运行程序进行缓存,但是当我与运行程序运行相同的管道时,作业报告创建了缓存并在随后的运行中成功提取了缓存,但是没有文件添加到缓存中。缓存路径。
build:
stage: build
cache:
key: "$CI_COMMIT_REF_SLUG"
paths:
- ccache/
artifacts:
paths:
- build/app/wg-ui
- build/lib/libproject-lib.so*
- build/tests/tests
script:
- echo "Starting build"
- ls
- ls ccache
- mkdir -p build && cd build
- qmake ../
- make -j$(nproc) -Oline CXX="ccache ${CXX}"
这是我的config.toml
的跑步者部分
[[runners]]
name = "Laptop-Runner"
url = "https://gitlab.com/"
token = "{REDACTED}"
executor = "docker"
[runners.docker]
tls_verify = false
image = "alpine:latest"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache"]
cache_dir = ""
shm_size = 0
pull_policy = "if-not-present"
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
我错过了配置步骤吗?我需要对config.toml做任何事情吗?
更新
我没有使用以前使用的Docker for Windows
,而是决定设置一个VM并从那里运行Docker和Gitlab-Runner。
使用完全相同的.gitlab-ci.yml
和config.toml
缓存可以按预期完美地工作;因此,我假设问题出在我的Docker配置或Gitlab Runner的Windows实施中。
答案 0 :(得分:0)
除Docker缓存外,您的运行器上没有配置任何缓存,因为您的[runners.cache]
部分为空。
来自https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-runnersdocker-section:
Docker执行器具有2种缓存级别:全局缓存(与任何其他执行器一样)和基于Docker卷的本地缓存。此配置标志仅作用于本地的标志,该标志禁止使用自动创建(未映射到主机目录)的缓存卷。换句话说,它仅阻止创建一个容器来容纳构建的临时文件,如果将Runner配置为分布式缓存模式,则不会禁用缓存。
有关分布式缓存模式,请参考https://docs.gitlab.com/runner/configuration/autoscale.html#distributed-runners-caching。