总是在“bundle exec”之前“bundle install”?

Rad*_*ado 6 ruby continuous-integration bundler

确保在任何 gem 构建的构建节点上安装依赖项的最佳实践是什么?

bundle exec如果尚未安装某些依赖项,则会失败。

我应该做什么

bundle install
bundle exec rake
Run Code Online (Sandbox Code Playgroud)

在每个构建上?

或者,还有更好的方法?

Jay*_*sey 4

bin/setupRails 附带的脚本用作预bundle check || bundle install光标步骤。这可能是一个很好的起点。

bundle install --frozen我在我们的管道上使用;freeze 确保 Gemfile.lock 不会发生任何更改。我们使用缓存,所以我什至不用担心这个bundle check步骤。

如果您可以提供有关您的设置的更多详细信息(docker?kubernetes?托管提供商?),如果是捆绑安装时间造成了问题,那么有人可能会推荐捆绑器的缓存策略。

但通常情况下,对于 CI 管道,我们总是bundle install --frozen在构建的早期运行,即使我们设置了缓存机制。我注意到在某些情况下,恢复表单缓存时可执行文件不会自动链接,因此这可以确保一切正常。无论如何,它并不慢;通过缓存,该bundle install --frozen步骤只需一两秒。