fuz*_*zes 9 gitlab-ci gitlab-ci-runner
我尝试使用gitlabRunner构建APK
当我构建apk时,我不想每次都下载所有构建文件
所以我尝试缓存.gradle / caches和.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
Run Code Online (Sandbox Code Playgroud)
但是创建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!
Run Code Online (Sandbox Code Playgroud)
我不知道为什么找不到缓存和包装器目录
当我进入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
Run Code Online (Sandbox Code Playgroud)
请帮我.......
MS *_*nds 18
那是因为cache仅适用于项目内部的文件和文件夹。在GitLab网站IMHO上对此的记录很少。
所以:
cache:
key: gradle-cache
paths:
- /root/.gradle/caches
- /root/.gradle/wrapper
Run Code Online (Sandbox Code Playgroud)
仍然只搜索:
/home/user/yourproject/root/.gradle/caches
/home/user/yourproject/root/.gradle/wrapper
Run Code Online (Sandbox Code Playgroud)
对于R,我将其设置R_LIBS_SITE为项目内的本地文件夹。这使我可以重复使用已安装的软件包。有这里看看。
我在同一个问题上大吃一惊。
MS Berends部分正确。缓存仅适用于项目目录中已存在的文件和文件夹,请参见此处: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
Run Code Online (Sandbox Code Playgroud)
但这也不起作用。
我最终要做的是以下几点:
在我的.gitlab-ci.yaml中,将GRADLE_USER_HOME设置为指向已映射的缓存卷,例如
GRADLE_USER_HOME:“ / cache / .gradle”
然后我将gradle home变量传递给./gradlew
./gradlew $ GRADLE_ARGS_CI -g $ GRADLE_USER_HOME testDebugUnitTest
请注意名为$ GRADLE_ARGS_CI的参数。设置为以下值
GRADLE_ARGS_CI:“ --no-build-cache --no-daemon --stacktrace”
如果您不想重复使用先前构建的构建输出,则--no-build-cache是必需的。--no-daemon毫不费力,因为每次构建都会产生docker构建环境。
通过这些更改,我可以节省2.5分钟的构建时间。
| 归档时间: |
|
| 查看次数: |
2258 次 |
| 最近记录: |