web-dev-qa-db-fra.com

Cache de dépendance Gradle CI Gitlab

Je construis Android sur Gitlab CI et le téléchargement des dépendances à chaque fois est ennuyeux. J'ai essayé la mise en cache:

$HOME/.gradle/
$HOME/.gradle/caches/
$GRADLE_HOME/caches/
$HOME/.m2/
.gradle/
build/
app/build/

La 26594ème itération de mon .gitlab-ci.yml est ici . J'ai installé gradle dans mon environnement de construction car sans mise en cache, gradlew le télécharge à chaque fois, ce qui prend encore plus de temps. L'image que j'utilise pour la construction est ici . Mon script de démarrage du serveur CI peut être trouvé ici . Je suppose que si la mise en cache fonctionne, je ne verrai pas de liste de mes dépendances à télécharger sur chaque build.

Journal de construction:

gitlab-ci-multi-runner 0.7.2 (998cf5d) Utilisation de l'exécuteur Docker avec l'image Android ... Extraction de l'image docker gitlab/gitlab-runner: build ... Extraction de l'image docker Android: dernière ... AVERTISSEMENT: impossible d'extraire la dernière version de l'image Android: dernière: erreur: bibliothèque d'images/Android: dernière non trouvée AVERTISSEMENT: l'image trouvée localement sera utilisée à la place.

Running on runner-76acd9d3-project-74192-concurrent-0 via ff9200d4be41...
Fetching changes...
Removing .gradle/
Removing artifacts.upload.log
Removing rxfirebaseandroid/build/
HEAD is now at 7f151df djgfj
Checking out 7f151df2 as ci-gitlab...
HEAD is now at 7f151df... djgfj
Restoring cache...

$ gradle testDebug
Download https://jcenter.bintray.com/com/Android/tools/build/gradle/1.3.0/gradle-1.3.0.pom
Download https://jcenter.bintray.com/com/Android/tools/build/gradle-core/1.3.0/gradle-core-1.3.0.pom
Download https://jcenter.bintray.com/com/Android/tools/build/builder/1.3.0/builder-1.3.0.pom
Download https://jcenter.bintray.com/com/Android/tools/lint/lint/24.3.0/lint-24.3.0.pom
Download https://jcenter.bintray.com/net/sf/proguard/proguard-gradle/5.2.1/proguard-gradle-5.2.1.pom
Download https://jcenter.bintray.com/net/sf/proguard/proguard-parent/5.2.1/proguard-parent-5.2.1.pom
Download https://jcenter.bintray.com/com/Android/tools/build/builder-model/1.3.0/builder-model-1.3.0.pom
Download https://jcenter.bintray.com/com/Android/tools/build/builder-test-api/1.3.0/builder-test-api-1.3.0.pom
Download https://jcenter.bintray.com/com/Android/tools/sdklib/24.3.0/sdklib-24.3.0.pom
Download https://jcenter.bintray.com/com/Android/tools/sdk-common/24.3.0/sdk-common-24.3.0.pom
Download https://jcenter.bintray.com/com/Android/tools/common/24.3.0/common-24.3.0.pom
Download https://jcenter.bintray.com/com/Android/tools/build/manifest-merger/24.3.0/manifest-merger-24.3.0.pom
Download https://jcenter.bintray.com/com/Android/tools/ddms/ddmlib/24.3.0/ddmlib-24.3.0.pom
Download https://jcenter.bintray.com/com/squareup/javawriter/2.5.0/javawriter-2.5.0.pom
Download https://jcenter.bintray.com/org/sonatype/oss/oss-parent/7/oss-parent-7.pom
Download https://jcenter.bintray.com/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48.pom
Download https://jcenter.bintray.com/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48.pom
Download https://jcenter.bintray.com/org/ow2/asm/asm/5.0.3/asm-5.0.3.pom
Download https://jcenter.bintray.com/org/ow2/asm/asm-parent/5.0.3/asm-parent-5.0.3.pom
Download https://jcenter.bintray.com/org/ow2/ow2/1.3/ow2-1.3.pom
Download https://jcenter.bintray.com/org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3.pom
Download https://jcenter.bintray.com/com/Android/tools/jack/jack-api/0.9.0/jack-api-0.9.0.pom
Download https://jcenter.bintray.com/com/Android/tools/jill/jill-api/0.9.0/jill-api-0.9.0.pom
Download https://jcenter.bintray.com/com/Android/tools/lint/lint-checks/24.3.0/lint-checks-24.3.0.pom
Download https://jcenter.bintray.com/org/Eclipse/jdt/core/compiler/ecj/4.4.2/ecj-4.4.2.pom
Download https://jcenter.bintray.com/net/sf/proguard/proguard-base/5.2.1/proguard-base-5.2.1.pom
Download https://jcenter.bintray.com/com/Android/tools/annotations/24.3.0/annotations-24.3.0.pom
Download https://jcenter.bintray.com/com/Android/tools/layoutlib/layoutlib-api/24.3.0/layoutlib-api-24.3.0.pom
Download https://jcenter.bintray.com/com/Android/tools/dvlib/24.3.0/dvlib-24.3.0.pom
Download https://jcenter.bintray.com/com/google/code/gson/gson/2.2.4/gson-2.2.4.pom
Download https://jcenter.bintray.com/org/Apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.pom
Download https://jcenter.bintray.com/org/Apache/commons/commons-parent/33/commons-parent-33.pom
Download https://jcenter.bintray.com/org/Apache/apache/13/Apache-13.pom
Download https://jcenter.bintray.com/org/Apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1.pom
Download https://jcenter.bintray.com/org/Apache/httpcomponents/httpcomponents-client/4.1.1/httpcomponents-client-4.1.1.pom
Download https://jcenter.bintray.com/org/Apache/httpcomponents/project/4.1.1/project-4.1.1.pom
Download https://jcenter.bintray.com/org/Apache/httpcomponents/httpmime/4.1/httpmime-4.1.pom
Download https://jcenter.bintray.com/org/Apache/httpcomponents/httpcomponents-client/4.1/httpcomponents-client-4.1.pom
Download https://jcenter.bintray.com/com/google/guava/guava/17.0/guava-17.0.pom
Download https://jcenter.bintray.com/com/google/guava/guava-parent/17.0/guava-parent-17.0.pom
Download https://jcenter.bintray.com/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.pom
Download https://jcenter.bintray.com/com/Android/tools/lint/lint-api/24.3.0/lint-api-24.3.0.pom
Download https://jcenter.bintray.com/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3.pom
Download https://jcenter.bintray.com/com/intellij/annotations/12.0/annotations-12.0.pom
Download https://jcenter.bintray.com/org/Apache/httpcomponents/httpcore/4.1/httpcore-4.1.pom
Download https://jcenter.bintray.com/org/Apache/httpcomponents/httpcomponents-core/4.1/httpcomponents-core-4.1.pom
Download https://jcenter.bintray.com/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.pom
Download https://jcenter.bintray.com/org/Apache/commons/commons-parent/5/commons-parent-5.pom
Download https://jcenter.bintray.com/org/Apache/apache/4/Apache-4.pom
Download https://jcenter.bintray.com/commons-codec/commons-codec/1.4/commons-codec-1.4.pom
Download https://jcenter.bintray.com/org/Apache/commons/commons-parent/11/commons-parent-11.pom
Download https://jcenter.bintray.com/com/Android/tools/external/lombok/lombok-ast/0.2.3/lombok-ast-0.2.3.pom
Download https://jcenter.bintray.com/com/Android/tools/build/gradle/1.3.0/gradle-1.3.0.jar
Download https://jcenter.bintray.com/com/Android/tools/build/gradle-core/1.3.0/gradle-core-1.3.0.jar
Download https://jcenter.bintray.com/com/Android/tools/build/builder/1.3.0/builder-1.3.0.jar
Download https://jcenter.bintray.com/com/Android/tools/lint/lint/24.3.0/lint-24.3.0.jar
Download https://jcenter.bintray.com/net/sf/proguard/proguard-gradle/5.2.1/proguard-gradle-5.2.1.jar
Download https://jcenter.bintray.com/com/Android/tools/build/builder-model/1.3.0/builder-model-1.3.0.jar
Download https://jcenter.bintray.com/com/Android/tools/build/builder-test-api/1.3.0/builder-test-api-1.3.0.jar
Download https://jcenter.bintray.com/com/Android/tools/sdklib/24.3.0/sdklib-24.3.0.jar
Download https://jcenter.bintray.com/com/Android/tools/sdk-common/24.3.0/sdk-common-24.3.0.jar
Download https://jcenter.bintray.com/com/Android/tools/common/24.3.0/common-24.3.0.jar
Download https://jcenter.bintray.com/com/Android/tools/build/manifest-merger/24.3.0/manifest-merger-24.3.0.jar
Download https://jcenter.bintray.com/com/Android/tools/ddms/ddmlib/24.3.0/ddmlib-24.3.0.jar
Download https://jcenter.bintray.com/com/squareup/javawriter/2.5.0/javawriter-2.5.0.jar
Download https://jcenter.bintray.com/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48.jar
Download https://jcenter.bintray.com/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48.jar
Download https://jcenter.bintray.com/org/ow2/asm/asm/5.0.3/asm-5.0.3.jar
Download https://jcenter.bintray.com/org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3.jar
Download https://jcenter.bintray.com/com/Android/tools/jack/jack-api/0.9.0/jack-api-0.9.0.jar
Download https://jcenter.bintray.com/com/Android/tools/jill/jill-api/0.9.0/jill-api-0.9.0.jar
Download https://jcenter.bintray.com/com/Android/tools/lint/lint-checks/24.3.0/lint-checks-24.3.0.jar
Download https://jcenter.bintray.com/org/Eclipse/jdt/core/compiler/ecj/4.4.2/ecj-4.4.2.jar
Download https://jcenter.bintray.com/net/sf/proguard/proguard-base/5.2.1/proguard-base-5.2.1.jar
Download https://jcenter.bintray.com/com/Android/tools/annotations/24.3.0/annotations-24.3.0.jar
Download https://jcenter.bintray.com/com/Android/tools/layoutlib/layoutlib-api/24.3.0/layoutlib-api-24.3.0.jar
Download https://jcenter.bintray.com/com/Android/tools/dvlib/24.3.0/dvlib-24.3.0.jar
Download https://jcenter.bintray.com/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar
Download https://jcenter.bintray.com/org/Apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar
Download https://jcenter.bintray.com/org/Apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1.jar
Download https://jcenter.bintray.com/org/Apache/httpcomponents/httpmime/4.1/httpmime-4.1.jar
Download https://jcenter.bintray.com/com/google/guava/guava/17.0/guava-17.0.jar
Download https://jcenter.bintray.com/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.jar
Download https://jcenter.bintray.com/com/Android/tools/lint/lint-api/24.3.0/lint-api-24.3.0.jar
Download https://jcenter.bintray.com/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3.jar
Download https://jcenter.bintray.com/com/intellij/annotations/12.0/annotations-12.0.jar
Download https://jcenter.bintray.com/org/Apache/httpcomponents/httpcore/4.1/httpcore-4.1.jar
Download https://jcenter.bintray.com/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar
Download https://jcenter.bintray.com/commons-codec/commons-codec/1.4/commons-codec-1.4.jar
Download https://jcenter.bintray.com/com/Android/tools/external/lombok/lombok-ast/0.2.3/lombok-ast-0.2.3.jar
Download https://jcenter.bintray.com/com/firebase/firebase-client-Android/2.3.1/firebase-client-Android-2.3.1.pom
Download https://jcenter.bintray.com/io/reactivex/rxjava/1.0.14/rxjava-1.0.14.pom
Download https://jcenter.bintray.com/com/firebase/firebase-client-jvm/2.3.1/firebase-client-jvm-2.3.1.pom
Download https://jcenter.bintray.com/com/fasterxml/jackson/core/jackson-databind/2.2.2/jackson-databind-2.2.2.pom
Download https://jcenter.bintray.com/com/fasterxml/oss-parent/10/oss-parent-10.pom
Download https://jcenter.bintray.com/com/firebase/tubesock/0.0.11/tubesock-0.0.11.pom
Download https://jcenter.bintray.com/com/fasterxml/jackson/core/jackson-annotations/2.2.2/jackson-annotations-2.2.2.pom
Download https://jcenter.bintray.com/com/fasterxml/jackson/core/jackson-core/2.2.2/jackson-core-2.2.2.pom
Download https://jcenter.bintray.com/com/fasterxml/jackson/core/jackson-annotations/2.2.2/jackson-annotations-2.2.2.jar
Download https://jcenter.bintray.com/com/fasterxml/jackson/core/jackson-core/2.2.2/jackson-core-2.2.2.jar
Download https://jcenter.bintray.com/com/fasterxml/jackson/core/jackson-databind/2.2.2/jackson-databind-2.2.2.jar
Download https://jcenter.bintray.com/com/firebase/tubesock/0.0.11/tubesock-0.0.11.jar
Download https://jcenter.bintray.com/com/firebase/firebase-client-jvm/2.3.1/firebase-client-jvm-2.3.1.jar
Download https://jcenter.bintray.com/com/firebase/firebase-client-Android/2.3.1/firebase-client-Android-2.3.1.jar
Download https://jcenter.bintray.com/io/reactivex/rxjava/1.0.14/rxjava-1.0.14.jar
Download https://jcenter.bintray.com/junit/junit/4.12/junit-4.12.pom
Download https://jcenter.bintray.com/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom
Download https://jcenter.bintray.com/org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom
Download https://jcenter.bintray.com/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
Download https://jcenter.bintray.com/junit/junit/4.12/junit-4.12.jar
:rxfirebaseandroid:preBuild UP-TO-DATE
:rxfirebaseandroid:preDebugBuild UP-TO-DATE
:rxfirebaseandroid:checkDebugManifest
:rxfirebaseandroid:prepareDebugDependencies
:rxfirebaseandroid:compileDebugAidl UP-TO-DATE
:rxfirebaseandroid:compileDebugRenderscript UP-TO-DATE
:rxfirebaseandroid:generateDebugBuildConfig UP-TO-DATE
:rxfirebaseandroid:generateDebugAssets UP-TO-DATE
:rxfirebaseandroid:mergeDebugAssets UP-TO-DATE
:rxfirebaseandroid:generateDebugResValues UP-TO-DATE
:rxfirebaseandroid:generateDebugResources UP-TO-DATE
:rxfirebaseandroid:packageDebugResources UP-TO-DATE
:rxfirebaseandroid:processDebugManifest UP-TO-DATE
:rxfirebaseandroid:processDebugResources UP-TO-DATE
:rxfirebaseandroid:generateDebugSources UP-TO-DATE
:rxfirebaseandroid:processDebugJavaRes UP-TO-DATE
:rxfirebaseandroid:compileDebugJavaWithJavac UP-TO-DATE
:rxfirebaseandroid:preDebugUnitTestBuild UP-TO-DATE
:rxfirebaseandroid:prepareDebugUnitTestDependencies
:rxfirebaseandroid:processDebugUnitTestJavaRes UP-TO-DATE
:rxfirebaseandroid:compileDebugUnitTestJavaWithJavac UP-TO-DATE
:rxfirebaseandroid:compileDebugUnitTestSources UP-TO-DATE
:rxfirebaseandroid:mockableAndroidJar UP-TO-DATE
:rxfirebaseandroid:assembleDebugUnitTest UP-TO-DATE
:rxfirebaseandroid:testDebugUnitTest UP-TO-DATE

BUILD SUCCESSFUL

Total time: 51.086 secs
$ gradle assembleDebug
:rxfirebaseandroid:compileLint
:rxfirebaseandroid:copyDebugLint UP-TO-DATE
:rxfirebaseandroid:preBuild UP-TO-DATE
:rxfirebaseandroid:preDebugBuild UP-TO-DATE
:rxfirebaseandroid:checkDebugManifest
:rxfirebaseandroid:prepareDebugDependencies
:rxfirebaseandroid:compileDebugAidl UP-TO-DATE
:rxfirebaseandroid:compileDebugRenderscript UP-TO-DATE
:rxfirebaseandroid:generateDebugBuildConfig UP-TO-DATE
:rxfirebaseandroid:generateDebugAssets UP-TO-DATE
:rxfirebaseandroid:mergeDebugAssets UP-TO-DATE
:rxfirebaseandroid:generateDebugResValues UP-TO-DATE
:rxfirebaseandroid:generateDebugResources UP-TO-DATE
:rxfirebaseandroid:packageDebugResources UP-TO-DATE
:rxfirebaseandroid:processDebugManifest UP-TO-DATE
:rxfirebaseandroid:processDebugResources UP-TO-DATE
:rxfirebaseandroid:generateDebugSources UP-TO-DATE
:rxfirebaseandroid:processDebugJavaRes UP-TO-DATE
:rxfirebaseandroid:compileDebugJavaWithJavac UP-TO-DATE
:rxfirebaseandroid:extractDebugAnnotations UP-TO-DATE
:rxfirebaseandroid:mergeDebugProguardFiles UP-TO-DATE
:rxfirebaseandroid:packageDebugJar UP-TO-DATE
:rxfirebaseandroid:compileDebugNdk UP-TO-DATE
:rxfirebaseandroid:packageDebugJniLibs UP-TO-DATE
:rxfirebaseandroid:packageDebugLocalJar UP-TO-DATE
:rxfirebaseandroid:packageDebugRenderscript UP-TO-DATE
:rxfirebaseandroid:bundleDebug UP-TO-DATE
:rxfirebaseandroid:compileDebugSources UP-TO-DATE
:rxfirebaseandroid:assembleDebug UP-TO-DATE

BUILD SUCCESSFUL

Total time: 10.146 secs

Archiving cache...
INFO[0000] Creating archive cache.tgz ...               
INFO[0002] Done!                                        
Archiving artifacts...
INFO[0000] Creating archive artifacts.tgz ...           
INFO[0000] Done!                                        
Uploading artifacts...
20.0K   artifacts.tgz

Build succeeded.
17
DariusL

https://stackoverflow.com/a/35478988/2026105

Il s'avère qu'un autre article a la réponse à cela! Il existe une solution qui consiste à exécuter un before_script qui définit le GRADLE_HOME dans le répertoire de votre projet, que vous pouvez ensuite Slurp avec la directive cache.

before_script:
    - export GRADLE_USER_HOME=`pwd`/.gradle

cache:
  paths:
     - .gradle/wrapper
     - .gradle/caches

build:
  stage: build
  script:
     - ./gradlew assemble

test:
  stage: test
  script:
     - ./gradlew check
44
ETL

Selon Kamil Trzciński

Nous exécutons la mise en cache en dehors du conteneur de génération. Vous pouvez donc mettre en cache les chemins absolus, mais comme seuls/builds et/cache sont transférés, vous n'avez aucun moyen de mettre en cache les fichiers locaux du conteneur.

Cela signifie que vous devez placer les fichiers Gradle dans, par exemple. le dossier /cache

before_script:
  - export GRADLE_USER_HOME=cache/.gradle

...

cache:
  key: "$CI_COMMIT_REF_NAME" #optional: per branch caching, can be omitted
  paths:
    - $GRADLE_USER_HOME/caches/
    - $GRADLE_USER_HOME/wrapper/
    - $GRADLE_USER_HOME/build-cache/

Le dossier /cache Sera conservé automatiquement, mais je conserve la configuration du cache pour plus de clarté.

6
patrickf