2017-03-28 69 views
2

我使用GitLab Runner作为CI来构建Android项目,但是缓存不起作用。我的。它从https://gist.github.com/daicham/5ac8461b8b49385244aa0977638c3420进行了修改。GitLab Gradle运行缓存不起作用

image: runmymind/docker-android-sdk:latest 
variables: 
    GRADLE_USER_HOME: $CI_PROJECT_DIR/.gradle 
stages: 
    - build 
debug: 
    stage: build 
    script: 
    - set +e 
    - du -sh $CI_PROJECT_DIR/.gradle/wrapper 
    - du -sh $CI_PROJECT_DIR/.gradle/caches 
    - set -e 
    - ./gradlew assembleDebug 
    - mkdir artifacts 
    - cp mobile/build/outputs/apk/*.apk artifacts/ 
    - cp wear/build/outputs/apk/*.apk artifacts/ 
    cache: 
    paths: 
     - .gradle/wrapper/ 
     - .gradle/caches/ 
     - build/ 
     - mobile/build/ 
     - wear/build/ 
    artifacts: 
    name: "project_${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}_${CI_COMMIT_SHA}" 
    expire_in: 2 weeks 
    paths: 
     - artifacts/ 

和日志:

Running with gitlab-ci-multi-runner 9.0.0 (08a9e6f) 
Using Docker executor with image runmymind/docker-android-sdk:latest ... 
Using docker image sha256:d696fa13188c8d2d121c86cf526201b363c1e34ee7b163d6ce1ab1718f91a5e6 ID=sha256:d696fa13188c8d2d121c86cf526201b363c1e34ee7b163d6ce1ab1718f91a5e6 for predefined container... 
Pulling docker image runmymind/docker-android-sdk:latest ... 
Using docker image runmymind/docker-android-sdk:latest ID=sha256:474ac98077a496f2f71aa22ce4eebcea966c2960a061d4a59babe81ff007009b for build container... 
Running on runner-8ce5d03c-project-72-concurrent-0 via outrage... 
Cloning repository... 
Cloning into '/builds/User/android-project'... 
Checking out 015d01d0 as master... 
Skipping Git submodules setup 
Checking cache for default... 
Successfully extracted cache 
$ set +e 
$ du -sh $CI_PROJECT_DIR/.gradle/wrapper 
du: cannot access '/builds/User/android-project/.gradle/wrapper': No such file or directory 
$ du -sh $CI_PROJECT_DIR/.gradle/caches 
du: cannot access '/builds/User/android-project/.gradle/caches': No such file or directory 
$ set -e 
$ ./gradlew assembleDebug 
Downloading https://services.gradle.org/distributions/gradle-3.4.1-all.zip 
Unzipping /builds/User/android-project/.gradle/wrapper/dists/gradle-3.4.1-all/c3ib5obfnqr0no9szq6qc17do/gradle-3.4.1-all.zip to /builds/User/android-project/.gradle/wrapper/dists/gradle-3.4.1-all/c3ib5obfnqr0no9szq6qc17do 
Set executable permissions for: /builds/User/android-project/.gradle/wrapper/dists/gradle-3.4.1-all/c3ib5obfnqr0no9szq6qc17do/gradle-3.4.1/bin/gradle 
Starting a Gradle Daemon (subsequent builds will be faster) 
Download https://jcenter.bintray.com/com/android/tools/build/gradle/2.3.0/gradle-2.3.0.pom 
(more downloads) 

我一直在使用gradle这个参数来设置用户的gradle家,积极指定.gradle/缓存等也尝试过,但没有一次成功。

任何想法?

回答

1

如果您使用Gitlab < 9.0,则添加以指定缓存必须在不同管道之间共享。

尝试添加key: $CI_PROJECT_NAMEcache下:

image: runmymind/docker-android-sdk:latest 
variables: 
    GRADLE_USER_HOME: $CI_PROJECT_DIR/.gradle 
stages: 
    - build 
debug: 
    stage: build 
    script: 
    - set +e 
    - du -sh $CI_PROJECT_DIR/.gradle/wrapper 
    - du -sh $CI_PROJECT_DIR/.gradle/caches 
    - set -e 
    - ./gradlew assembleDebug 
    - mkdir artifacts 
    - cp mobile/build/outputs/apk/*.apk artifacts/ 
    - cp wear/build/outputs/apk/*.apk artifacts/ 
    cache: 
    key: $CI_PROJECT_NAME 
    paths: 
     - .gradle/wrapper/ 
     - .gradle/caches/ 
     - build/ 
     - mobile/build/ 
     - wear/build/ 
    artifacts: 
    name: "project_${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}_${CI_COMMIT_SHA}" 
    expire_in: 2 weeks 
    paths: 
     - artifacts/ 
+0

感谢答复,但我使用GitLab 9.0.2 –

+0

@FrederickZhang可以尝试呢? 'cache:key'的新'default'属性让我感到有点困惑 – rpadovani

+0

刚刚尝试但没有运气...;( –