- uses: actions/cache@v4
with:
path: ~/.npm
key: npm-${{ hashFiles('**/package-lock.json') }}
restore-keys: npm-
配了 actions/cache,每次 job 日志都打 Cache not found for input keys,依赖照样装两分钟,缓存一次都没命中过,key 看着也没写错,换分支还是一样,本地删缓存也没用。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:key 里带了 run_id 这种每次都变的字段,缓存永远落在新 key 上,hashFiles 路径写错也会退化成固定串,同样命中不了,问题多半死在 key 的拼法上,换个写法立刻就能命中。
「Actions 缓存未命中」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。
处理上按这个顺序:把 run_id 这种每次都会变的字段从 key 里去掉 只留和依赖相关的;用 lock 文件的哈希值当成 key 的主体部分 改依赖才会变;restore-keys 写一个前缀 精确没命中时还能降级复用 别写死整串。
确认没问题再收工,第二次跑同一分支时日志出现 Cache restored,装依赖明显变快,命中率也稳定。
