validation安装到docker集装箱中的R软件包

有没有人有任何validationR包安装到docker集装箱的最佳做法? 我想将我的容器设置为在CI服务上运行,并validation我的软件包是否已安装,但是由于我在本地构build了它,日志似乎很难确定安装了哪些软件包,哪些没有安装。 如果让CI服务为我做这件事,或者使用一个简单的批处理脚本来validation软件包被安装,那将是很好的。

以下是我目前的dockerfile:

FROM rocker/tidyverse:latest RUN mkdir -p $HOME/.R COPY R/Makevars /root/.R/Makevars RUN apt-get update -qq \ && apt-get -y --no-install-recommends install \ liblzma-dev \ libbz2-dev \ ed \ clang \ ccache \ default-jdk \ default-jre \ && R CMD javareconf \ && install2.r --error \ ggstance ggrepel \ rstan shinystan rstanarm \ ###My pkgs tidytext janitor corrr officer devtools pacman tidyquant timetk tibbletime sweep broom prophet \ forecast prophet lime sparklyr rsparkling \ formattable httr rvest xml2 jsonlite \ textclean ggthemes naniar \ && Rscript -e 'devtools::install_github(c("hadley/multidplyr","jeremystan/tidyjson","ropenscilabs/skimr"))' \ && rm -rf /tmp/downloaded_packages/ /tmp/*.rds \ && rm -rf /var/lib/apt/lists/* 

保存这个像package_check.R ,然后有一个Docker线,通过Rscript运行它:

 c("tidytext", "janitor", "corrr", "officer", "devtools", "pacman", "tidyquant", "timetk", "tibbletime", "sweep", "broom", "prophet", "forecast", "prophet", "lime", "sparklyr", "rsparkling", "formattable", "httr", "rvest", "xml2", "jsonlite", "textclean", "ggthemes", "naniar") -> chk_pkgs suppressPackageStartupMessages( sapply(chk_pkgs, require, character.only=TRUE, quietly=FALSE, warn.conflicts=FALSE) ) -> ret missing_pkgs <- sort(names(which(ret == FALSE))) if (length(missing_pkgs) > 0) { warning("The following packages are not installed: %s", paste0(sprintf(" - %s", missing_pkgs), collapse="\n")) } quit(save=FALSE, status=length(names) == 0, runLast = FALSE) 

这会给你一个遗漏的缺失列表错误,并以非零退出状态退出脚本。