Proč cirlceCI nestaví úspěšně, když renv je součástí R balíček?

0

Otázka

Pokouším se nastavit CI pro R balíček. V tomto ohledu zvažuji circleCI, který pracoval s předchozím Výzkumu projekty. Nicméně tentokrát jsem se následující chybová zpráva:

 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

Můj .circleci/config.yml vypadá podobně jako jeden

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

a my_random_image vypadá takto:

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')"

Takže jeho docela standardní věci, tak daleko, jak vidím. K chybě dochází, pouze pokud renv je součástí jestli můj R balíček. Jinak circleCI nestěžuje a pracuje podle očekávání bez chyby. Ráda bych, aby renv v mém Výzkumu projektu, a proto se snaží pochopit problém a řešení. oceňuji jakoukoliv pomoc!!

circleci continuous-integration r
2021-11-21 19:33:34
1

Nejlepší odpověď

1

Problém zde je nejvíce pravděpodobné, že váš běh fázi, zde:

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

instaluje balíčky do default user / stránky knihovny, ale když R je spuštěn v projektu je pracovní adresář:

 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]

na renv autoloader je automatické stahování renva aktivace renv projekt knihovna.

Ve výchozím nastavení renv izoláty projekty, od uživatele / stránky knihovny, takže balíčky nainstalované v předchozích krocích nejsou viditelné v rámci projektu. Toto chování je záměrné, a zajišťuje, že jiný projekt knihovny jsou izolovány jak od změn v uživateli / stránky knihovny, stejně jako v jiných projektu knihovny.

Jeden z těchto by měl pomoci:

  1. Pokud váš renv.lock je aktuální, zavolejte renv::restore() předtím, než se snaží používat devtools nebo jiných obalů;

  2. Umožňují renv vidět uživatele knihovny, např. s proměnnou prostředí RENV_CONFIG_USER_LIBRARY = TRUE.

Já bych doporučil čtení https://rstudio.github.io/renv/articles/renv.html a https://rstudio.github.io/renv/articles/ci.html pokud jste tak již neučinili.

2021-11-22 04:34:07

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................