Reproducible DevOps Strictly Without Magic
{muggle} is an R package to implement DevOps best practices for R data products.
Data products are somewhere between one-off scripts and CRAN-bound packages. One the one hand, they are more complex than simple scripts and take longer to build. To ensure value for their creators, such data products must be reproducible and better scale to accomodate more users or developers. On the other hand, data products face fewer requirements than mainstream packages: They can have more dependencies and they need not run in different computing environments.
{muggle} addresses the needs of such often domain-specific data products by implementing these priorities:
DESCRIPTION
file.
This exposes more technical underpinnings, but makes it easier to reason about a project if things go wrong.R/
and a report can be an RMarkdown document in vignettes/
.
This adds minimal overhead, but also enforces various best practices and structures projects in a single, familiar way.One Image Rule them All {muggle} provides one fully versioned and reproducible compute environment as a docker image, including:
Across
git commit
.
{muggle} is designed so that human-edited sources files are under version control.
Copy-pasted boilerplate and compiled assets are avoided as much as possible (with the exception of man/
so as to not break remotes::install_github()
).
This requires a bit more discipline, but enhances reproducibility and cleans up git diff
s.make
TargetsAll DevOps-steps are stored as make
targets.
To see all targets, simply run make
.