1

每次通过我的 azure devops 管道运行构建时,我都会收到此错误:

给定的缓存键在恢复和保存步骤之间的解析值发生了变化

我正在尝试缓存我的 react native 项目中使用的 cocoapods。我在缓存键字符串中使用 Podfile.lock 的哈希值(如果 Podfile.lock 中有更改,则缓存键将更改,并且在缓存未命中后将上传新缓存)

如果我在本地删除 Podfile.lock 和 ios/Pods 文件夹,然后运行 ​​pod install 没有任何变化。当构建管道运行 pod install 时,Podfile.lock 哈希确实发生了变化,这意味着永远无法检索缓存,因为密钥总是被修改。

我努力了:

  • 将 vmImage 更改为 10.14 而不是 macOS-latest
  • 确保本地所有 pod 都是最新的
  • 确保 cocoapods 版本在本地和构建管道中是相同的

我想不出还有什么可以尝试的,微软文档中没有关于 cocoapods 缓存的示例,而且似乎没有人遇到过同样的问题

4

2 回答 2

0

您可以尝试以下方法:

# Podfile.lock and project.pbxproj are changed during the build process, so we make copies
- script: |
   cp ./ios/Podfile.lock ./ios/podfile_key
   cp ./ios/AwesomeProject.xcodeproj/project.pbxproj ./ios/project_key
  displayName: Create pod cache keys

- task: Cache@2
  inputs:
    key: 'pods | "$(Agent.OS)" | ./ios/podfile_key | ./ios/Podfile | ./ios/AwesomeProject.xcworkspace/contents.xcworkspacedata | ./ios/project_key'
    path: './ios/Pods'
    cacheHitVar: 'PODS_CACHE_RESTORED'
  displayName: Cache pods

- task: CocoaPods@0
  displayName: 'pod install using the CocoaPods task with defaults'
  condition: ne(variables.PODS_CACHE_RESTORED, 'true')
  inputs:
   workingDirectory: './ios/'
   forceRepoUpdate: false
于 2022-01-07T07:03:31.203 回答
0

该错误表明您需要确保 Cache 和 Post-Job Cache 步骤之间的任何构建步骤都不会更改缓存键值。您可以删除导致更改的步骤或从密钥中删除 Podfile.lock。

于 2021-02-08T10:07:57.663 回答