为什么当我缓存构建目录时,Gradle会在GitLab CI上重新运行最新测试?

jmo0nnb3  于 2023-02-23  发布在  Git
关注(0)|答案(1)|浏览(226)

我为多项目Gradle文件提供了以下构建配置:

stages:
  - test

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

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

test :
  dependencies: []
  image: openjdk:x
  stage: test
  script:
      - ./gradlew test --debug

在GitLab中,在没有修改源文件的构建之间,我得到:

Up-to-date check for task ':x:compileJava' took 1.117 secs. It is not up-to-date because:
No history is available.

我不知道为什么它会这样说,因为我希望任务历史记录从缓存中恢复。我在运行之间的日志中看到了这一点:

Creating cache default...
.gradle/wrapper: found 207 matching files          
.gradle/caches: found 5058 matching files          
build: found 2743 matching files

当我在本地计算机上重新运行时,我可以看到测试没有重新运行:

> Skipping task ':x:compileJava' as it is up-to-date (took 0.008 secs).

更令人困惑的是依赖项被完美地缓存了,当我没有做任何代码更改时,它只是不断地重新运行测试。

cvxl0en2

cvxl0en21#

据我所知,gradle丢失的历史记录也存储在.gradle文件夹中,而不是缓存或 Package 子文件夹中。如果您让Gitlab缓存完整的.gradle文件夹,问题应该会消失。
另请参见此示例:https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Gradle.gitlab-ci.yml

相关问题