neurogenomics
rworkflows
HTML

Continuous integration for R packages. 🔀 Automates testing ✅, documentation website building 📦, & containerised deployment 🐳.

Last updated May 22, 2026
91
Stars
11
Forks
30
Issues
0
Stars/day
Attention Score
58
Language breakdown
HTML 89.6%
R 10.3%
Dockerfile 0.1%
Files click to expand
README


License: GPL-3

R build status R build status

Authors: Brian Schilder, Alan Murphy, Hiranyamaya (Hiru) Dash, Nathan Skene

README updated: May-05-2026

CRAN checks

Citation

If you use rworkflows, please cite:

Schilder, B.M., Murphy, A.E. & Skene, N.G. rworkflows: automating
reproducible practices for the R community. Nat Commun 15, 149 (2024).

Intro

rworkflows is a suite of tools to make it easy for R developers to implement reproducible best practices on GitHub.

It includes three main components:

template**: a CRAN/Bioc-compatible R package template that automatically generates essential documentation using package metadata. package**: a lightweight CRAN package to automatically set up short, customisable workflows that trigger the rworkflows action. action**: an open-source action available on the GitHub Actions Marketplace.

rworkflows action steps

GitHub Actions are a powerful way to automatically launch workflows every time you push changes to a GitHub repository. This is a form of **Continuous Integration/Deployment (CI/CD)**, which helps ensure that your code is always working as expected (without having to manually check each time).

Here, we have designed a robust, reusable, and flexible action specifically for the development of R packages. We also provide an R function to automatically generate a workflow file that calls the rworkflows composite action:

Currently, rworkflows action can perform the following tasks (with options to enable/disable/modify each step):

  • 🐳 Builds a Docker container to run subsequent steps within.
  • 🐍 Builds and/or activates a custom conda environment.
  • 🛠️ Installs system dependencies
  • 🛠️ Installs LaTeX dependencies.
  • 🛠 Installs R dependencies.
  • ✅ Builds and checks your R package (with
CRAN and/or Bioconductor checks). the results to Codecov.
  • 🚀 (Re)builds and launches a documentation website for your R
package.
  • 🐳 Pushes a Docker container (with
Rstudio and all dependencies pre-installed) to your choice of container registry (e.g. **GitHub Container Registry**, DockerHub). telemetry report.
  • 🎖 Updates relevant badges added to your README with
rworkflows::use_badges().

Importantly, this workflow is designed to work with any R package out-of-the-box. This means you won’t have to manually edit any yaml files, just run the rworkflows::use_workflow() function and you’re ready to go within seconds!

Note: rworkflows uses, was inspired by, and benefits from the
work of many other projects, especially:
biocthis,
usethis,
actions/,
r-lib/actions,
bioc-actions,
JamesIves/github-pages-deploy-action,
docker/build-push-action,
bioconductor_docker.
For more details on how these projects relate to rworkflows, please
see below.

Quickstart

Install and create the workflow in your R package’s project folder.

r

in R

Install rworkflows R package ####

For the stable CRAN release

if(!require("rworkflows")) install.packages("rworkflows")

Or, for the latest development version

if(!require("rworkflows")) remotes::install_github("neurogenomics/rworkflows")

Create workflow file

path <- rworkflows::use_workflow()

Push to GitHub, and let everything else run automatically! You can check the status of your workflow by clicking on the Actions tab in your GitHub repo.

bash

in the Terminal

git add . git commit -m "Added rworkflows" git push

Note: If you want to skip running GitHub Actions on a particular push, simply add “\[skip ci\]” somewhere in the commit message, e.g.: git commit -m "Update README [skip ci]"

Documentation

Vignettes

Get started

Introductory vignette for using rworkflows.

Docker/Singularity

Copy-and-paste instructions for creating a Docker or Singularity container with the rworkflows R package pre-installed.

Dependency graph.

Interactive graph showing all the GitHub repos that currently use the rworkflows action.

Videos

rworkflows: taming the Wild West of R packages

Talk on the background, motivation, and utility of rworkflows.

Getting into the flow with rworkflows: an introductory tutorial

Step-by-step tutorial showing how to use rworkflows in an R package.

GitHub Secrets

To use certain features of rworkflows, you may need to set up one or more GitHub Secrets:

  • PAT_GITHUB \[Optional\]: Can grant access to private repos on GitHub
Actions. You can generate your very own Personal Authentication Token with usethis::creategithubtoken(). See the GitHub docs for details.
  • DOCKER_TOKEN \[Optional\]: Allows GitHub Actions to push to a
DockerHub account.
  • CODECOV_TOKEN \[Optional\]: Codecov repository token to upload
coverage reports. Providing this token helps prevent report upload failures by bypassing Codecov’s GitHub API rate limits. See the Codecov documentation for details.

Acknowledgments

rworkflows builds upon the work of many others, especially the following:

biocthis

This workflow is largely inspired by the workflow generated by the usebiocgithubaction() function within the biothis package, developed by @lcolladotor.

Key changes in rworkflows

  • Uses dynamic variables to specify R/Bioconductor versions
(e.g. r: "latest") and the name of your R package, as opposed to static names that are likely to become outdated (e.g. r: "4.0.1").
  • Additional error handling and dependencies checks.
  • Re-renders README.Rmd before rebuilding the documentation website.

usethis

biocthis was in turn inspired by usethis.

actions/

A general set of GitHub Actions maintained by the core GitHub team.

r-lib/actions

A set of GitHub Actions for R development maintained by the Rstudio/Posit team.

bioc-actions

Bioconductor-oriented **GitHub Actions** created by @grimbough.

JamesIves/github-pages-deploy-action

Builds and deploys the GitHub Pages documentation website in the rworkflows GHA workflows.

docker/build-push-action

A set of GitHub Actions for building/pushing Docker containers.

bioconductor_docker

Uses the official bioconductor/bioconductor_docker Docker container.

NOTE: Whenever a new version of Bioconductor is released, the bioconductor/bioconductor_docker container will often lag behind the actual Bioconductor releases for up to several days, due to the time it takes to update the container. This means that sometimes “devel” in Bioconductor/bioconductor_docker is actually referring to the current “release” version of Bioconductor (i.e. the previous Bioc version’s “devel”). For further details, see this Issue, and the Bioconductor release schedule.

scFlow

This Dockerfile was partly adapted from the scFlow Dockerfile. Unlike other Dockerfiles, this one **does not require any manual editing when applying to different R packages**. This means that users who are unfamiliar with Docker do not have to troubleshoot making this file correctly. It also means that it will continue to work even if your R package dependencies change.

act

A very useful command line tool for testing GitHub Actions locally.

actions/runner-images

Runner images for each OS provided by GitHub.

actions/setup-miniconda

GitHub Action to setup Miniconda and conda environments.

Session Info

r
utils::sessionInfo()

## R version 4.6.0 (2026-04-24) ## Platform: aarch64-apple-darwin23 ## Running under: macOS Tahoe 26.4.1 ## ## Matrix products: default ## BLAS: /Library/Frameworks/R.framework/Versions/4.6/Resources/lib/libRblas.0.dylib ## LAPACK: /Library/Frameworks/R.framework/Versions/4.6/Resources/lib/libRlapack.dylib; LAPACK version 3.12.1 ## ## locale: ## [1] enUS.UTF-8/enUS.UTF-8/enUS.UTF-8/C/enUS.UTF-8/en_US.UTF-8 ## ## time zone: Europe/London ## tzcode source: internal ## ## attached base packages: ## [1] stats graphics grDevices utils datasets methods base ## ## loaded via a namespace (and not attached): ## [1] gtable0.3.6 jsonlite2.0.0 renv_1.2.2 ## [4] dplyr1.2.1 compiler4.6.0 BiocManager_1.30.27 ## [7] tidyselect1.2.1 rvcheck0.2.1 scales_1.4.0 ## [10] yaml2.3.12 fastmap1.2.0 here_1.0.2 ## [13] ggplot24.0.3 R62.6.1 generics_0.1.4 ## [16] knitr1.51 yulab.utils0.2.4 tibble_3.3.1 ## [19] desc1.4.3 dlstats0.1.7 rprojroot_2.1.1 ## [22] pillar1.11.1 RColorBrewer1.1-3 rlang_1.2.0 ## [25] badger0.2.5 xfun0.57 fs_2.1.0 ## [28] S70.2.2 otel0.2.0 cli_3.6.6 ## [31] magrittr2.0.5 rworkflows1.0.12 digest_0.6.39 ## [34] grid4.6.0 rstudioapi0.18.0 rappdirs_0.3.4 ## [37] lifecycle1.0.5 vctrs0.7.3 data.table_1.18.2.1 ## [40] evaluate1.0.5 glue1.8.1 farver_2.1.2 ## [43] rmarkdown2.31 tools4.6.0 pkgconfig_2.0.3 ## [46] htmltools_0.5.9

🔗 More in this category

© 2026 GitRepoTrend · neurogenomics/rworkflows · Updated daily from GitHub