gpt4 book ai didi

caching - 如何在 GitLab CI 中有一个 "cache per package.json"文件?

转载 作者:行者123 更新时间:2023-12-04 07:52:12 24 4
gpt4 key购买 nike

我有一个使用 GitLab CI 构建、测试和部署的 Vue Web 应用程序。

GitLab CI 有一个“Cache”功能,可以缓存作业的特定产品,这样可以避免将来在同一管道中运行作业,而是使用缓存的产品。

我想通过缓存 node_modules 来提高我的工作流程的性能目录,以便它可以跨管道共享。

GitLab Docs suggests使用 ${CI_COMMIT_REF_SLUG}作为实现此目的的缓存键。但是,这意味着“每个分支缓存”,我想对此进行改进。

我想要一个缓存“每个 package.json”。也就是说,只有package.json的内容发生了变化缓存键是否会改变和npm install将运行。

我正在考虑使用 package.json 内容的哈希值文件作为缓存键。 GitLab CI 可以做到这一点吗?如果是这样,如何?

最佳答案

从 Gilab Runner v12.5 开始,这现在是可能的

cache:
key:
files:
- Gemfile.lock
- package-lock.json // or yarn.lock
paths:
- vendor/ruby
- node_modules
意思是缓存 key将是从更改给定文件的最近提交(最多两个,如果列出了两个文件)计算的 SHA 校验和。每当这些文件之一发生变化时,就会计算一个新的缓存键并创建一个新的缓存。任何 future 的作业都使用相同的 Gemfile.lock 运行和 package.jsoncache:key:files将使用新缓存,而不是重建依赖项。
更多信息: https://docs.gitlab.com/ee/ci/yaml/#cachekeyfiles
还要确保始终使用 --frozen-lockfile在 CI 作业中标记。 (或 npm ci)常规 npm installyarn install / yarn命令会生成新的锁定文件,您通常不会注意到它,直到您再次安装软件包。从而使您的构建工件和缓存不一致。

关于caching - 如何在 GitLab CI 中有一个 "cache per package.json"文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53471618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com