Caching Travis CI在指定位置缓存单个文件
我正在Travis CI上构建一个Ruby项目,并使用Gemfile和Bundler来管理依赖关系。MyCaching Travis CI在指定位置缓存单个文件,caching,bundler,travis-ci,Caching,Bundler,Travis Ci,我正在Travis CI上构建一个Ruby项目,并使用Gemfile和Bundler来管理依赖关系。My.travis.yml只包含一行关于缓存的内容: cache: bundler 我在其他地方也依赖于此(Travis的默认install命令、缓存目录,以及在上传缓存之前额外的bundle clean) 默认情况下,Gemfile.lock不会被缓存。我想缓存它以使Bundler跳过依赖项解析并使用缓存的Gemfile.lock。我还没有找到有效的解决方案 有什么想法吗?我注意到下面唯一的评
.travis.yml
只包含一行关于缓存的内容:
cache: bundler
我在其他地方也依赖于此(Travis的默认install
命令、缓存目录,以及在上传缓存之前额外的bundle clean
)
默认情况下,Gemfile.lock
不会被缓存。我想缓存它以使Bundler跳过依赖项解析并使用缓存的Gemfile.lock
。我还没有找到有效的解决方案
有什么想法吗?我注意到下面唯一的评论,并提出了一个想法,但我认为这更多的是一种变通方法,而不是解决方案 在安装阶段之前,从
中的/tmp/cached
复制Gemfile.lock
。将Gemfile.lock
复制到脚本
阶段之前的中的/tmp/cached
。这样一来,Travis CI将缓存它,Bundler将使用缓存
我仍在寻找真正的解决方案。AFAICS来自
- 如果在
cache:directories:
.1下指定文件名而不是目录名,则该功能将起作用
有一个警告:
- 最初,当没有缓存时(因此文件还不存在),缓存还原步骤将创建一个具有此名称的空目录。
- 您需要在构建早期手动检测并删除此目录
示例.travis.yml
(使用evvar作为文件路径以避免在任何地方重复):
env:
全球的:
-文件=
隐藏物:
目录:
-$FILE
安装前:
-如果[-d$FILE]];然后rm-rf“$FILE”;fi
#创建和/或使用该文件
1这是因为他们使用tar
来创建和提取缓存存档,并且tar
不关心您是否向其传递文件或目录