GitHub 操作缓存已恢复,但缓存命中输出为 false

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

我们使用缓存来缓存我们的node_modules,然后仅在找不到该缓存时运行npm CI。

这在除一个分支之外的所有分支上都按预期工作,尽管事实上缓存已明显恢复,但该步骤的缓存命中输出为 false。

如有任何帮助,我们将不胜感激。

github npm github-actions npm-install
1个回答
0
投票

我确信 Github 端(仍然)存在 bug。这是我今天的例子,打开了Github的调试,所以你可以看到矛盾:

.

文档说部分密钥匹配将导致

cache-hit
设置为
false
,但此示例显示了完全匹配。

我的一份工作的值设置正确,另一份工作的值设置不正确。我能提供的唯一建议是忽略输出,直到他们更新文档。

为了解决这个问题,在每次调用操作/缓存后,我的作业都会检查是否存在已恢复的已知文件,而不是依赖于有缺陷的输出,例如

- name: Check cache
  id: cache
  run: |
    "notfound=$(((!(Test-Path ThirdParty\objs\x64\Debug\zlibd.dll)).ToString().ToLower()))" | Out-File -FilePath $env:GITHUB_OUTPUT -Append

如果没有找到密钥,则应运行后续作业:

- name: Install 7Zip
  if: fromJSON(steps.cache.outputs.notfound)
  run: choco install -y 7zip

请注意一个令人恼火的问题,即写入 GITHUB_OUTPUT 的

notfound=true
notfound=false
文本被解释为字符串。因此,除非您使用
fromJSON()
,否则两者都会评估为 true。

© www.soinside.com 2019 - 2024. All rights reserved.