簡體   English   中英

當 renv 是 R package 的一部分時,為什么 cirlceCI 無法成功構建?

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

我正在嘗試為 R package 設置 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

My.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 package 的一部分時才會發生錯誤。 否則,circleCI 不會抱怨並按預期運行而不會出現任何錯誤。 我想將renv保留在我的 R 項目中,因此很難理解這個問題和解決方案。 感謝任何幫助!

這里的問題很可能是您的運行階段,這里:

      - 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

I'd recommend reading https://rstudio.github.io/renv/articles/renv.html and https://rstudio.github.io/renv/articles/ci.html if you haven't already.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM