我尝试用gitlab runner构建apk
当我构建apk时,我不想每次都下载所有的构建包
所以我尝试缓存.gradle/cache和.gradle/wrappers
下面是我的gitlab-ci.yml
sdk_build_job
image: myimage:latest
stage: sdk-build
script:
...
cache:
key: gradle-cache
- /root/.gradle/caches
- /root/.gradle/wrapper但是create gradle-cache总是发出警告
Creating cache gradle-cache...
WARNING: /root/.gradle/caches: no matching files
WARNING: /root/.gradle/wrapper: no matching files
Archive is up to date! 我不知道为什么找不到缓存和包装目录
当我进入docker容器并找到文件夹时,它们被放置得很好
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请帮帮我......
发布于 2019-01-04 20:52:28
这是因为cache仅适用于项目中的文件和文件夹。在GitLab网站IMHO上,这方面的文档很少。
所以:
cache:
key: gradle-cache
paths:
- /root/.gradle/caches
- /root/.gradle/wrapper仍然只在以下位置进行搜索:
/home/user/yourproject/root/.gradle/caches
/home/user/yourproject/root/.gradle/wrapper对于R,我将R_LIBS_SITE设置为项目中的本地文件夹。这允许我重用已安装的包。使用a look here。
发布于 2019-01-06 12:26:44
我在同样的问题上撞了自己的头。
伯恩兹女士部分是对的。缓存应该只对项目目录中已经存在的文件和文件夹起作用,请查看此处:https://gitlab.com/gitlab-org/gitlab-ce/issues/4431
应该有一个选项将缓存文件夹装载为卷,如下所示
[[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但是也不能使用。
我最终做的事情如下:
gradlew:"/cache/.gradle"
./gradlew $GRADLE_ARGS_CI -g $GRADLE_USER_HOME $GRADLE_USER_HOME $GRADLE_ARGS_CI参数。它被设置为下列值
缓存:“--无构建缓存--无后台进程--stacktrace"
如果您不想重用以前构建的构建输出,那么--no- build -cache是必要的。-- no -daemon是不需要动脑筋的,因为docker构建环境是为每个构建生成的。
通过这些更改,我可以节省2.5分钟的构建时间。
发布于 2019-09-18 14:53:44
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/.nugethttps://stackoverflow.com/questions/53953122
复制相似问题