当 renv 是 R 包的一部分时,为什么 cirlceCI 无法成功构建?

Why does cirlceCI does not build successfully when renv is part of a R package?

我正在尝试为 R 包设置 CI。在这方面,我正在考虑 circleCI,它已经与以前的 R 项目一起工作。但是这次,我收到以下错误:

 Downloading renv 0.14.0 ... OK (downloaded source)
 Installing renv 0.14.0 ... Done!
 Successfully installed and loaded renv 0.14.0.
 Project '~/main' loaded. [renv 0.14.0]
 devtools::install_deps(dependencies = TRUE)
 Error in loadNamespace(x) : there is no package called ‘devtools’
 Calls: loadNamespace -> withRestarts -> withOneRestart -> doWithOneRestart
 Execution halted

我的 .circleci/config.yml 看起来和那个很相似

version: 2
jobs:
  build:
    docker:
      - image: my_random_image
    steps:
      - checkout
      - run:
          name: Install package dependencies
          command: R -e "devtools::install_deps(dep = TRUE)"
      - run:
          name: Build package
          command: R CMD build .
      - run:
          name: Check package
          command: R CMD check *tar.gz

和my_random_image看起来如下:

FROM r-base:4.1.2

RUN apt-get update  \
  && apt-get install git libssl-dev ssh texlive-latex-base texlive-fonts-recommended 
libcurl4-openssl-dev libxml2-dev -y \
  && rm -rf /var/lib/apt/lists/*

RUN R -e "install.packages(c('devtools', 'roxygen2'), repos='http://cran.us.r- project.org')"

据我所知,这是非常标准的东西。仅当 renv 是我的 R 包的一部分时才会出现错误。否则 circleCI 不会抱怨并按预期运行而不会出现任何错误。 我想在我的 R 项目中保留 renv,因此很难理解问题及其解决方案。 感谢任何帮助!!

此处的问题很可能是您的 运行 阶段,此处:

      - run:
          name: Install package dependencies
          command: R -e "devtools::install_deps(dep = TRUE)"

将包安装到默认用户/站点库中,但是当在项目的工作目录中启动 R 时:

 Downloading renv 0.14.0 ... OK (downloaded source)
 Installing renv 0.14.0 ... Done!
 Successfully installed and loaded renv 0.14.0.
 Project '~/main' loaded. [renv 0.14.0]

renv 自动加载器正在自动下载 renv,并激活 renv 项目库。

默认情况下,renv 项目与用户/站点库隔离开来,因此您在前面的步骤中安装的包在项目中是不可见的。此行为是有意的,并确保不同的项目库与用户/站点库以及其他项目库中的更改隔离开来。

以下其中一项应该有所帮助:

  1. 如果您的 renv.lock 是最新的,请在尝试使用 devtools 或其他软件包之前致电 renv::restore()

  2. 允许renv查看用户库,例如环境变量 RENV_CONFIG_USER_LIBRARY = TRUE.

如果您还没有阅读 https://rstudio.github.io/renv/articles/renv.html and https://rstudio.github.io/renv/articles/ci.html,我建议您阅读。