在TeamCity CI代理中重用Gradle缓存 [英] Reuse Gradle cache in Teamcity CI agents

查看:8
本文介绍了在TeamCity CI代理中重用Gradle缓存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

鉴于我有多个构建基于Gradle 5.X的应用程序的代理,我想开始跨所有代理缓存Gradle依赖项。

我尝试共享.gradle文件夹,但当我尝试在两个代理上运行相同的生成时,其中一个代理失败:

Caused by: org.gradle.api.UncheckedIOException: 

Failed to create parent directory '/home/buildagent/.gradle/caches/5.0' 

when creating directory '/home/buildagent/.gradle/caches/5.0/generated-gradle-jars'

如何在TeamCity代理之间共享依赖项?

是否有支持Gradle 5及更高版本的通用解决方案?

我在Gradle 6.x documentation中找到此信息,但在5.x文档中找不到任何内容。

推荐答案

我不能说您得到的异常的根本原因是什么,因为消息很少。我所能说的是,对于Gradle 5,没有您想要的通过网络共享本地缓存的内置解决方案。您提到的copy and reuse the cache功能已在Gradle 6.1中引入,但有一些限制:

  • 它主要用于将内容复制到其他计算机,可能具有不同的目录结构(缓存重新定位)。
  • 仅支持模块缓存($GRADLE_HOME/caches/modules-<version>)
  • 网络共享很可能仅作为read-only dependency cache工作。
那么,什么是适用于Gradle 5和6的便携解决方案?根据最初引入缓存可重用性的工单(Make dependency caches relocateable #1338):

  1. 复制文件夹,而不是网络挂载。目录结构必须在不同的计算机上保持一致。
  2. 使用您的依赖项装载以前导出的存储库:
    编写一个Gradle任务,从您的依赖项创建一个文件存储库,并打包该文件存储库。然后在您的构建中具有这样的逻辑:"如果存在该文件存储库,则使用它"。

    (出自this comment)

这篇关于在TeamCity CI代理中重用Gradle缓存的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆