Closed AnnAngela closed 9 months ago
好像不太对,发生新的提交后缓存不生效了
@watchingfun 具体是什么表现
@AnnAngela 我新修改文件提交后,npm ci任务还是那么久
@AnnAngela 我改改再试试,还有这个是否可以通过输出是否缓存命中的变量,我想如果命中缓存,那么Build the native modules这个任务也不用每次都执行
@watchingfun 这个会在AnnAngela/cached_node-modules下个版本支持
@AnnAngela 清空所有缓存,第一次运行8m, 未作任何修改,第二次运行5m, 修改readme.md, 提交, 第三次运行7m 31s, 这是我的测试结果
看起来是这里出了问题,改了别的地方的文件导致获取到的commit变了,我再看看如何获取patches文件夹的最新commit https://github.com/watchingfun/Joi/actions/runs/7486446279/job/20376832881#step:6:9 vs https://github.com/watchingfun/Joi/actions/runs/7486377618/job/20376616662#step:6:9
嗯,实在获取不到patches的变更的话,就只能去掉这个commit id,然后手动清理缓存了
@watchingfun 试试git log --pretty=tformat:"%h" -n1 patches/
?
@AnnAngela 我本地试了,新提交后执行该命令得到的id不变,但是在github action上运行就不对,不知道为啥
@watchingfun 我看了下,可以用gha的 hashFiles('patches/**')
(此函数为每个匹配的文件计算单独的 SHA-256 哈希, 然后使用这些哈希来计算文件集的最终 SHA-256 哈希),就不需要我们手动计算commit了,直接用这个就行:
with:
customVariable: :patches@{{ hashFiles('patches/**') }}
改了以下几点来更好地使用缓存:
node_modules/.cache
里,这是个社区广泛使用的缓存目录 (ref: webpack, turborepo, AVA)package-lock.json
的最新 commit 短 ID,然后决定是否重新生成缓存;get-patches-commit-short
是用来获取patches
文件夹的最新 commit 短 ID,避免更改了该文件夹后缓存不失效的问题。