Moving from push-button or git-backed deployment to fully customizable programmatic deployment via the RStudio Connect Server API can be a challenging project to undertake.

This article describes the components of a simple template I use for constructing Azure DevOps content deployment pipelines to RStudio Connect:

TLDR; This is the goal
  • Requires RStudio Connect 1.8.6 or higher
  • Works with all supported content types on Connect (including Python)

This is how I structure project directories in GitHub to prepare them for RStudio Connect deployment via Azure DevOps:


TLDR; eRum 2020 talks are available on YouTube!

Thanks to the hard work of an impressive and dedicated group of organizers, eRum transitioned to a virtual conference this year.

At the time (last June), I had recently stepped into a new role at RStudio, product manager for the Connect team. I was grappling with how to take my solutions engineering identity and apply it to product management. The rambling narrative I put together touches on all the things I’d been thinking about since joining RStudio: R in Production, Analytic Administrators, and DevOps Philosophy. …


A few years ago I opened a short-lived Etsy shop selling 3D printed R logo cookie cutters. I learned that Etsy shops are both thrilling and a big pain. There were always lots of things to keep track of — a project with lots of automation potential! I shut down the shop in 2017, but it’s still fun to think about how I could manage it better now.

R logo cookie cutters in action

This article uses the example of my cookie cutter Etsy shop to demonstrate an R Markdown-based conditional custom email workflow using RStudio Connect.

Goal: Receive an automated alert in my email inbox…


Earlier this month, RStudio released blastula 0.3.1 which significantly improved the workflow for adding custom emails to reports hosted on RStudio Connect.

The new recommended way to create email is by using blastula’s R Markdown output format: blastula::blastula_email. This allows you to build an email document as a separate R Markdown file from that of the main report. Read more here: RStudio Blog

This post is a quick-tour demo of what to expect from the new blastula custom email experience on RStudio Connect. You can follow along by downloading the latest version of blastula and using the example files provided:


TLDR; Turn a Jupyter Notebook into a reveal.js slideshow, then publish that HTML document to RStudio Connect.

If you use RStudio Connect at your organization, hopefully you already know how to publish different types of content built with the R programming language and package ecosystem. Recently, RStudio Connect has started supporting python-based content as well, including assets you’ve built in R that leverage reticulate, as well as static and source-code backed Jupyter Notebooks. Learn more here.

Now that RStudio Server Pro 1.2.5 has support for launching and managing RStudio and Jupyter sessions side-by-side, I wanted to create a series of…


At RStudio, we recommend staying (or at least starting) within the boundaries of a set of best practices when it comes to the use of our professional products. I write how-to articles that cover basic solutions for RStudio Connect based workflows. I would highly encourage you to explore those “basic builds” while you’re learning the ins and outs of Connect.

With that being said, I also believe that a certain amount of exploratory hacking is healthy for product development. RStudio Connect is actually an incredibly flexible platform that can enable all sorts of creative solutions.

This post describes a few…


TL;DR: Do cool stuff with R, RStudio products and VirtualBox!

Last weekend I attended SatRdays Chicago to give a talk on advocating for great analytic infrastructure as a data scientist. Specifically, I wanted to share some ideas for how someone might start developing skills and exploring this space.

There are a number of barriers to entry around analytic administration, and it’s something I’m incredibly passionate about helping people navigate. Nathan Stephens regularly writes and speaks about R Administration. …


Note: This article (while still accurate) represents an outdated approach. You can find the latest best practices here.

Basic Builds is a series of articles providing code templates for data products published to RStudio Connect

Introduction: Application data and how to find it

Building data products with open source R packages like shiny, rmarkdown and plumber can be a powerful way to both explore and communicate with data. This article is a discussion on how I think about data and data storage in relation to application “data product” code in a production context.

I’ve built a…


TLDR; Create custom variants of a single R Markdown document, schedule each to execute at different times, and send emails to pre-defined recipients.

Basic Builds is a series of articles providing code templates for data products published to RStudio Connect.

Goal: Use parameterized R Markdown published on RStudio Connect to schedule and send reminder emails to a rotating recipient list.

Theoretical use case: Each week my engineering group assigns one person to be the “on call” point person for responding to any and all requests from the business overlords.The schedule rotates as follows: Cole on…


TL;DR: New content management Connect server APIs are easy to integrate with programmatic deployment workflows.

Have you heard!? RStudio Connect 1.7.0 has support for programmatic deployment in the RStudio Connect Server API. These new APIs let your deployment engineers craft custom deployment workflows like these:

This article demonstrates programmatic deployment of a Shiny application with GitHub webhooks and a Jenkins Freestyle project.

What are we trying to build?

I have a data product (in this case a shiny application) deployed to my RStudio Connect server. I also have a GitHub repository for the application where I’ve version controlled the app code. I want to link and…

Kelly O'Briant

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store