r - 在 Travis-CI 中使用 Packrat(而不是 CRAN)中的 R 包源文件

标签 r travis-ci packrat

我正在使用R package that is an RStudio project ,我正在使用 packrat 保留我的项目所依赖的包源的本地副本。

我有Travis-CI checking my R package每次我进行提交时,但每次 Travis 构建我的包时,它都会获取依赖包的最新版本,而不是我在 packrat/ 目录中获得的版本。

我可以在 richfitz/wood 中看到他似乎已经通过他的 .travis.yml 文件实现了这一目标:

env:
 USE_PACKRAT=1

还有一个相当复杂的make/packrat.mk文件使一切正常工作。

我的问题是配置我的项目(例如我的 .travis.yml 文件)以告诉 Travis 机器从我的 packrat/ 获取包的最简单方法是什么> github 上的目录,而不是来自 CRAN?

最佳答案

经过多次尝试、错误和进一步阅读,似乎可以做到这一点,使用像这样的 .travis.yml 文件:

# R for travis: see documentation at https://docs.travis-ci.com/user/languages/r

language: R
sudo: false
cache: packages
install:
  - R -e "0" --args --bootstrap-packrat
warnings_are_errors: false

上述文件中的关键行是:

install:
  - R -e "0" --args --bootstrap-packrat

这将启动 R,并在本地 packrat 目录中构建 R 包,以便它们在 Travis 机器中可用。

之后,travis 将继续并尝试构建包,并且不需要联系 CRAN 来获取依赖项,因为它们已经可用(假设 packrat 按预期工作)。

我在这里发现了这个技巧:https://travis-ci.org/ChowHub/paper-pattern-similarity/builds/127262823并在 https://github.com/rstudio/packrat/issues/158 。我已经在这里工作了:https://travis-ci.org/benmarwick/mjbtramp/builds/157747326

这样做的优点是我们可以使用与本地使用的完全相同的软件包在 travis 上进行构建。当我们在 travis 上构建时,我们不必从 CRAN 获取最新的软件包,现在我们可以更好地控制 travis 在我们的项目中构建的软件包版本。

缺点是 travis 上的构建时间大大增加。改用 Packrat 后,我​​的一个项目从 2-3 分钟缩短到了 13-15 分钟。

<小时/>

更新在诺姆提出以下问题和Jim's comment之后,看来我们可以使用 cache: 缓存 Packrat 包,如下所示:

# R for travis: see documentation at https://docs.travis-ci.com/user/languages/r

language: R
sudo: false
cache:
  directories: $TRAVIS_BUILD_DIR/packrat/
  packages: true
install:
  - R -e "0" --args --bootstrap-packrat
warnings_are_errors: false

在我的用例中,这大大减少了时间,回到 1-2 分钟。

关于r - 在 Travis-CI 中使用 Packrat(而不是 CRAN)中的 R 包源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39009579/

相关文章:

mysql - Travis 构建失败,并出现错误 LOAD DATA LOCAL INFILE 文件请求因访问限制而被拒绝

sql-server - 在travis中无法连接到docker内部的SQL Server数据库

r - 如何从 R 统计程序中完全删除 renv

r - 如何在R中使用重复生成正数

java - Travis CI 失败并警告有关旧 jdk 下的 -Xdoclint 标志

多列上的R dplyr过滤字符串条件

algorithm - Packrat 缓存 : Right to left vs. 从左到右?

r - 如何为 Packrat 设置本地存储库?

r - 尝试从行中删除 "ZCTA"

r - R 中用于 3D 表面预测的薄板样条