Android GitLab CI。通过阶段重用已编译的文件

问题描述 投票:0回答:1

我正在寻找一种解决方案来优化管道执行通过重用先前阶段的编译文件

让我们将其缩小到两个阶段:

compile - test
compile
将共享其构建文件夹给
test

到目前为止,我尝试了

dependencies
关键字。但无论我做什么,Gradle 似乎都没有重用这些文件。

概念证明

概念验证可以在 Android Studio 中本地实现:

./gradlew clean
./gradlew compileReleaseKotlin compileReleaseJavaWithJavac
./gradlew --console=plain app: testReleaseUnitTest

执行测试命令时,我可以看到

compile
ksp
等任务旁边的所有最新日志。

尝试1

但是当管道使用这些运行时,我可以看到 gradle 再次执行所有任务。

compile:
  stage: compile
  script:
    - ./gradlew --console=plain compileReleaseKotlin compileReleaseJavaWithJavac
  artifacts:
    paths:
      - app/build/
    expire_in: 1 days

tests_release:
  stage: tests
  dependencies:
    - compile
  script:
    - ./gradlew --console=plain app:testReleaseUnitTest 

尝试2

我尝试像这样手动删除一些命令

- ./gradlew --console=plain app:testReleaseUnitTest -x :app:compileGmsReleaseKotlin -x :app:kspGmsReleaseKotlin

但是随后失败了

Execution failed for task ':app:processGmsReleaseJavaRes'.
> Querying the mapped value of provider(java.util.Set) before task ':app:compileGmsReleaseKotlin' has completed is not supported

尝试3

我还尝试下载工件并将它们放入我的本地文件中。它似乎部分起作用。所以也许问题是我需要以某种方式应用这些文件?

TL;博士

如何在单个管道中的后续 CI 阶段重用已编译的文件(模块/构建文件夹)?

android gradle continuous-integration gitlab-ci gradlew
1个回答
0
投票

只需将 .gradle 文件夹添加到工件中

  ...
  artifacts:
    paths:
      - .gradle/
      - app/build/
© www.soinside.com 2019 - 2024. All rights reserved.