From b48e609afe629bf5edfcd537f6aeff2b7655d570 Mon Sep 17 00:00:00 2001 From: "Matthijs S. Berends" Date: Sat, 5 Jan 2019 09:50:22 +0100 Subject: [PATCH] gitlab pkg cache --- .Rbuildignore | 4 ++-- .gitlab-ci.R | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++ .gitlab-ci.yml | 25 ++++++++++++++-------- 3 files changed, 74 insertions(+), 11 deletions(-) create mode 100644 .gitlab-ci.R diff --git a/.Rbuildignore b/.Rbuildignore index ac953bdc..98066496 100755 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -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$ diff --git a/.gitlab-ci.R b/.gitlab-ci.R new file mode 100644 index 00000000..6993de43 --- /dev/null +++ b/.gitlab-ci.R @@ -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) + # } + # } +} diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ee6b3f62..12e62691 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -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: