gitlab pkg cache

This commit is contained in:
dr. M.S. (Matthijs) Berends 2019-01-05 09:50:22 +01:00
parent ee76afede5
commit b48e609afe
3 changed files with 74 additions and 11 deletions

View File

@ -1,5 +1,7 @@
^.*\.Rproj$
^\.gitlab-ci\.yml$
^\.gitlab-ci\.R$
^\.Renviron$
^\.Rprofile$
^\.Rproj\.user$
^\.travis\.yml$
@ -7,7 +9,6 @@
^_noinclude$
^_pkgdown\.yml$
^appveyor\.yml$
^ci.R$
^cran-comments\.md$
^CRAN-RELEASE$
^doc$
@ -17,6 +18,5 @@
^index\.md$
^installed_deps$
^Meta$
^packrat/
^pkgdown$
^public$

56
.gitlab-ci.R Normal file
View File

@ -0,0 +1,56 @@
# ==================================================================== #
# TITLE #
# Antimicrobial Resistance (AMR) Analysis #
# #
# AUTHORS #
# Berends MS (m.s.berends@umcg.nl), Luz CF (c.f.luz@umcg.nl) #
# #
# LICENCE #
# This package is free software; you can redistribute it and/or modify #
# it under the terms of the GNU General Public License version 2.0, #
# as published by the Free Software Foundation. #
# #
# This R package is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License version 2.0 for more details. #
# ==================================================================== #
install_if_needed <- function(pkg, repos, quiet) {
package_path <- find.package(pkg, quiet = quiet)
if (length(package_path) == 0) {
message("NOTE: pkg ", pkg, " missing, installing...")
install.packages(pkg, repos = repos, quiet = quiet)
}
}
gl_update_pkg_all <- function(repos = "https://cran.rstudio.com",
quiet = TRUE,
install_pkgdown = FALSE) {
# update existing
update.packages(ask = FALSE, repos = repos, quiet = quiet)
install_if_needed(pkg = "devtools", repos = repos, quiet = quiet)
if (install_pkgdown = TRUE) {
install_if_needed(pkg = "pkgdown", repos = repos, quiet = quiet)
}
devtools::install_dev_deps(repos = repos, quiet = quiet, upgrade = TRUE)
cat("\nINSTALLED:\n\n")
instld <- as.data.frame(installed.packages())
rownames(instld) <- NULL
print(instld[, c("Package", "Version")])
return(invisible(TRUE))
# which ones are needed now?
# pkg_needed <-
# if (length(pkg_needed) > 0) {
# # install them
# for (i %in% 1:length(pkg_needed)) {
# install_if_needed(pkg = pkg_needed[i], repos = repos, quiet = quiet)
# }
# }
}

View File

@ -29,16 +29,23 @@ stages:
- test
- deploy
image: debian:buster-slim
image: debian:stretch-slim
before_script:
- apt-get update
# install dependencies for package
# install dependencies for packages
- apt-get -y install libxml2-dev libssl-dev libcurl4-openssl-dev zlib1g-dev pandoc r-base
- mkdir installed_deps
- Rscript -e '.libPaths("installed_deps")'
- Rscript -e 'install.packages(c("devtools", "rlang"), repos = "https://cran.rstudio.com")'
- Rscript -e 'devtools::install_dev_deps(repos = "https://cran.rstudio.com")'
# cache R packages
- mkdir -p installed_deps
- echo 'R_LIBS="installed_deps"' > .Renviron
- echo 'R_LIBS_USER="installed_deps"' >> .Renviron
- echo 'R_LIBS_SITE="installed_deps"' >> .Renviron
- Rscript -e '.libPaths()'
# install missing and outdated packages
- Rscript -e 'source(".gitlab-ci.R")'
- Rscript -e 'gl_update_pkg_all(repos = "https://cran.rstudio.com", quiet = TRUE, install_pkgdown = TRUE)'
#- Rscript -e 'install.packages(c("devtools", "rlang"), repos = "https://cran.rstudio.com", quiet = TRUE)'
#- Rscript -e 'devtools::install_dev_deps(repos = "https://cran.rstudio.com", quiet = TRUE)'
cache:
key: "$CI_COMMIT_REF_SLUG"
@ -50,8 +57,8 @@ R 3:
allow_failure: true
script:
# remove vignettes folder and get VignetteBuilder field out of DESCRIPTION file
- rm -rf vignettes
- Rscript -e 'd <- read.dcf("DESCRIPTION"); d[, colnames(d) == "VignetteBuilder"] <- NA; write.dcf(d, "DESCRIPTION")'
#- rm -rf vignettes
#- Rscript -e 'd <- read.dcf("DESCRIPTION"); d[, colnames(d) == "VignetteBuilder"] <- NA; write.dcf(d, "DESCRIPTION")'
# build package
- R CMD build . --no-build-vignettes --no-manual
- PKG_FILE_NAME=$(ls -1t *.tar.gz | head -n 1)
@ -79,7 +86,7 @@ pages:
only:
- master
script:
- Rscript -e "install.packages('pkgdown', repos = 'https://cran.rstudio.com')"
#- Rscript -e "install.packages('pkgdown', repos = 'https://cran.rstudio.com')"
- Rscript -e "devtools::install(build = TRUE, upgrade = FALSE)"
- R -e "pkgdown::build_site(examples = FALSE, override = list(destination = 'public'))"
artifacts: