You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Pipelines中Android Gradle跨分支缓存失效问题求助

Azure Pipelines Gradle跨分支缓存失效的解决办法

问题根源

你的缓存配置存在两个核心问题:

  • 缓存路径错误:Gradle的默认本地缓存目录并非$(Pipeline.Workspace)/.gradle,代理上的Gradle缓存通常存储在用户主目录下,路径随操作系统不同而变化。
  • 缓存键与分支共享逻辑缺失:原配置的键没有区分主分支标识,无法让功能分支精准匹配主分支生成的缓存。

修正后的缓存配置

根据操作系统选择对应路径,以下是适配Linux/macOS的配置(Windows将path改为$(USERPROFILE)\.gradle):

steps:
  - task: Cache@2
    inputs:
      key: 'gradle | "$(Agent.OS)" | main'
      restoreKeys: |
        gradle | "$(Agent.OS)" | main
        gradle | "$(Agent.OS)"
      path: '$(HOME)/.gradle'
    displayName: 'Cache Gradle'

配置说明

  • 路径修正:$(HOME)/.gradle(Linux/macOS)或$(USERPROFILE)\.gradle(Windows)是Gradle默认的本地缓存目录,确保缓存的是依赖包、构建缓存等有效内容。
  • 缓存键设计:主分支构建时生成带main标识的缓存键,保证主分支的缓存有稳定的唯一标识。
  • 跨分支复用逻辑:功能分支通过restoreKeys优先尝试恢复同操作系统下主分支的缓存,若主分支缓存不存在,则 fallback到同操作系统的任意Gradle缓存,最大化缓存命中率。

额外优化建议

在Gradle构建脚本中开启本地构建缓存,进一步提升构建速度:
在settings.gradle或settings.gradle.kts中添加:

// Groovy语法
buildCache {
    local {
        enabled = true
    }
}
// Kotlin语法
buildCache {
    local {
        isEnabled = true
    }
}

内容的提问来源于stack exchange,提问作者Kerollos Ragaie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 18:49:53