knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/README-", out.width = "100%" ) # libraries library(tibble) library(dplyr) library(purrr) devtools::load_all(".") # dockerhub account account = desc::desc_get_field("Config/Dockerhub/Account")
badge_name = "Docker Image CI" src = glue::glue("https://github.com/{account}/mdsrocker/actions/workflows/publish-docker-images.yml/badge.svg") href = glue::glue("https://github.com/{account}/mdsrocker/actions/workflows/publish-docker-images.yml") glue("[]({href})")
The goal of mdsrocker is to provide a framework for building a stack of version-stable docker images based on rocker/r-ver, an ubuntu-based docker image containing version-stable base R & a set of src build tools.
We follow the version tag approach of the rocker-project, using the image
tag for specifying which version of R is desired
(e.g. r paste("rocker/r-ver:", as.character(getRversion()))
).
Omit the tag or specify :latest
to always receive the latest versions.
stack = mdsrocker_dockerfiles |> dplyr::select(image, description) stack = stack |> dplyr::mutate( image = kableExtra::cell_spec( image, "html", link = glue::glue("https://hub.docker.com/r/{account}/{image}") ) ) kableExtra::kable(stack, escape = FALSE)
This building system is designed as an R package.
All relevant information is stored in two data.frames
(as package data):
mdsrocker_installation
: three different software bundles for the various
scopes of the docker images, each containing predefined sets of software
packages (system libraries, extra software packages, Python packages,
R packages) to install.kableExtra::kable(mdsrocker_installation)
mdsrocker_dockerfiles
: four dockerfile specifications, each containing
the relevant information for generating the dockerfiles.mdsrocker_dockerfiles |> dplyr::select(-description) |> kableExtra::kable()
In this building system,
scripts/
directory, dockerfiles/
, and.github/workflows/
:update-building-system.yml
: re-builds all scripts if any changes
were done in the repository (e.g. adding an R version to the DESCRIPTION
file or adding some R packages to the software bundles),publish-docker-images.yml
: actually builds and pushes the defined image
stack.All scripts are automatically updated in the Github Actions Workflow
update-building-system.yml
(by running execute.R
) when commited and pushed.
For adding changes (e.g. additional R packages), do:
mdseasy::easy_version(element = "dev", check_renv = FALSE, check_gitlab_ci = FALSE, push = FALSE)
data-raw/datasets.R
,devtools::document()
devtools::check()
NEWS.md
gert::git_commit_all("YOUR COMMIT MESSAGE")
mdseasy::easy_version(check_renv = FALSE, check_gitlab_ci = FALSE)
The Github Actions workflow publish-docker-images.yml
is:
update-building-system.yml
workflow
on main
branch, Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.