Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add release docs to explain branching #494

Open
wants to merge 1 commit into
base: dev
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 44 additions & 2 deletions RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,54 @@ no effect on the build process

GitHub Actions build a matrix of many images:

- on every push to main
- on PRs into main
- on every push to `main`
- on PRs into `main`

In addition, for builds that run on main (some are scheduled, there are webhooks, etc.),
we also push to [Docker Hub](https://hub.docker.com/u/rstudio) and [GitHub Container Registry](https://ghcr.io)

- The `main` branch builds preview / daily images every morning (pulling new product versions)
- The `dev` branch (or product specific branches) can build preview / daily
images on demand (using webhooks), but usually only builds based on merges to
the respective branches

### Preview Images

We also build a matrix of "preview" images. There are two axes that we "preview":

- the `main` version of the Dockerfiles, with "development" or "preview" versions of the products
- the `dev` version of the Dockerfiles (with "released," "development," and "preview" versions of the products)
- we also build product-specific dev branches too: `dev-rspm`, `dev-connect`, `dev-workbench`

These are mostly used during the development cycle, when:

- a product is preparing for release
- product changes require the docker container to be changed in some way (i.e.
how you install a dependency changes)
- system dependencies / container image contents change in a way that could
break customers (we batch such changes into product releases)

## Branching Paradigm

The `main` branch deploys our usable images.
The `dev` branch is "default" for PRs, branches, and code merging. Any code
merged here should be "ready to merge" at any time. Sometimes we hold up the `dev`
branch for testing, burn in, integration testing, etc.
`dev-product` branches are used for individual product changes.

You can see this overviewed in the diagram below

```mermaid
---
title: rstudio-docker-products Workflow
---
flowchart LR
dev-connect -->|Merged on Connect release| dev
dev-rspm -->|Merged on PPM release| dev
dev-workbench -->|Merged on Workbench release| dev
dev -->|Can merge at any time| main
```

## Testing Locally

It is possible to test locally from a product directory by using:
Expand Down