[英]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
將項目與用戶/站點庫隔離,因此在您之前的步驟中安裝的包在項目中不可見。 這種行為是有意的,並確保不同的項目庫與用戶/站點庫以及其他項目庫中的更改隔離。
以下其中一項應該會有所幫助:
如果您的renv.lock
是最新的,請在嘗試使用devtools
或其他軟件包之前調用renv::restore()
;
允許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.