首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gitlab ci缓存没有匹配的文件

gitlab ci缓存没有匹配的文件
EN

Stack Overflow用户
提问于 2018-12-28 10:44:13
回答 3查看 11K关注 0票数 21

我尝试用gitlab runner构建apk

当我构建apk时,我不想每次都下载所有的构建包

所以我尝试缓存.gradle/cache和.gradle/wrappers

下面是我的gitlab-ci.yml

代码语言:javascript
复制
sdk_build_job
  image: myimage:latest
  stage: sdk-build
  script:
    ...
  cache:
    key: gradle-cache
      - /root/.gradle/caches
      - /root/.gradle/wrapper

但是create gradle-cache总是发出警告

代码语言:javascript
复制
Creating cache gradle-cache...
WARNING: /root/.gradle/caches: no matching files       
WARNING: /root/.gradle/wrapper: no matching files      
Archive is up to date!                             

我不知道为什么找不到缓存和包装目录

当我进入docker容器并找到文件夹时,它们被放置得很好

代码语言:javascript
复制
root@runner-3d9fa57b-project-4-concurrent-0:~/.gradle# pwd
/root/.gradle
root@runner-3d9fa57b-project-4-concurrent-0:~/.gradle# ls -al
total 28
drwxr-xr-x 7 root root 4096 Dec 28 02:21 .
drwx------ 1 root root 4096 Dec 28 02:19 ..
drwxr-xr-x 6 root root 4096 Dec 28 02:20 caches
drwxr-xr-x 3 root root 4096 Dec 28 02:19 daemon
drwxr-xr-x 4 root root 4096 Dec 28 02:19 native
drwxr-xr-x 2 root root 4096 Dec 28 02:21 workers
drwxr-xr-x 3 root root 4096 Dec 28 02:19 wrapper

请帮帮我......

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-01-04 20:52:28

这是因为cache仅适用于项目中的文件和文件夹。在GitLab网站IMHO上,这方面的文档很少。

所以:

代码语言:javascript
复制
cache:
  key: gradle-cache
  paths:
    - /root/.gradle/caches
    - /root/.gradle/wrapper

仍然只在以下位置进行搜索:

代码语言:javascript
复制
/home/user/yourproject/root/.gradle/caches
/home/user/yourproject/root/.gradle/wrapper

对于R,我将R_LIBS_SITE设置为项目中的本地文件夹。这允许我重用已安装的包。使用a look here

票数 40
EN

Stack Overflow用户

发布于 2019-01-06 12:26:44

我在同样的问题上撞了自己的头。

伯恩兹女士部分是对的。缓存应该只对项目目录中已经存在的文件和文件夹起作用,请查看此处:https://gitlab.com/gitlab-org/gitlab-ce/issues/4431

应该有一个选项将缓存文件夹装载为卷,如下所示

代码语言:javascript
复制
[[runners]]
  name = ""
  url = ""
  token = ""
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "alpine:latest"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache", "/root/.gradle:/root/.gradle"]
    shm_size = 0

但是也不能使用

我最终做的事情如下:

  1. 在我的.gitlab-ci.yaml中,我将GRADLE_USER_HOME设置为指向已经映射的缓存卷,如下所示

gradlew:"/cache/.gradle"

  • Then我将gradle home变量传递给./GRADLE_USER_HOME,如下所示

./gradlew $GRADLE_ARGS_CI -g $GRADLE_USER_HOME $GRADLE_USER_HOME $GRADLE_ARGS_CI参数。它被设置为下列值

缓存:“--无构建缓存--无后台进程--stacktrace"

如果您不想重用以前构建的构建输出,那么--no- build -cache是必要的。-- no -daemon是不需要动脑筋的,因为docker构建环境是为每个构建生成的。

通过这些更改,我可以节省2.5分钟的构建时间。

票数 6
EN

Stack Overflow用户

发布于 2019-09-18 14:53:44

代码语言:javascript
复制
cache:
  paths:
    - .nuget

before_script:
  - dotnet --version
  - "[ -f .nuget/NuGet/NuGet.Config ] && rm -rf $HOME/.nuget || rsync -a $HOME/.nuget ./"
  - ln -s $(pwd)/.nuget $HOME/.nuget
票数 -5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53953122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档