gpt4 book ai didi

ruby-on-rails - CircleCI gem 缓存

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

是否可以缓存 gem,以便 bundle install不会为每个构建安装一堆 gem ?每次构建都需要 5 分钟,这太多了。

我已将此添加到 circle.yml配置:

dependencies:
cache_directories:
- "/home/ubuntu/.rvm/gems/ruby-2.1.2/gems/"

这是 bundle show gem_name 提供的公共(public)目录放置所有系统 gem 的地方。

在这个添加系统写入这样的日志之后:
restoring cache v4/company/repo_name/dependency/circle-ci/42/mGWhlYQIxyOy0GZtt4QmCw__.tar.gz
restoring home/ubuntu/repo_name/vendor/bundle, home/ubuntu/.m2, home/ubuntu/.ivy2, home/ubuntu/.go_workspace, home/ubuntu/.gradle, home/ubuntu/.rvm/gems/ruby-2.1.2/gems

因此,据我了解,它会恢复系统 gem 和安装到 vendor/bundle 中的 gem ,但是,我仍然看到这个(这需要很多时间):
Installing rake 10.4.2
Installing i18n 0.7.0
Installing json 1.8.2
Installing minitest 5.5.1
...

代替
using rake 10.4.2
using i18n 0.7.0
using json 1.8.2
using minitest 5.5.1
...

所以,它似乎应该工作,但它没有。有什么问题?

最佳答案

解决方案很简单:CircleCI 默认运行一些命令,默认情况下也将 gem 缓存在 vendor/bundle 中。 ,因此无需向 cache_directories 添加任何内容.

在这些默认命令中是 bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs=4 --retry=3 ,它会检查缓存目录中是否存在 gem,如果它们不存在则安装它们。

就我而言,我的项目由多个应用程序(主应用程序、通用 UI、API 客户端和 API 模拟)组成,分为 4 个不同的存储库。他们中的大多数需要bundle install命令。

我唯一要做的就是更换我所有的bundle install带有 bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs=4 --retry=3 的命令(总是安装 gems) .在这种情况下,所有 gem 仅在我第一次运行测试时安装,并且以下所有构建都使用以前缓存的 gem。

关于ruby-on-rails - CircleCI gem 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30666176/

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