restarone / violet_rails

an app engine for your business. Seamlessly implement business logic with a powerful API. Out of the box CMS, blog, forum and email functionality. Developer friendly & easily extendable for your next SaaS/XaaS project. Built with Rails 6, Devise, Sidekiq & PostgreSQL
https://violet.restarone.solutions
MIT License
96 stars 44 forks source link

Violet Rails Release Management #743

Open Pralish opened 2 years ago

Pralish commented 2 years ago

How to create a feature branch?

https://user-images.githubusercontent.com/50227291/173409347-614af821-cd03-47de-80b5-84b96ac96905.mp4

donrestarone commented 2 years ago

Violet Rails Release management workflow

This is how we safely make changes to the core framework.

:dart: Step 1: Open a pull request

Once you open a pull request on this repository, our test suite will run.

Example PR: https://github.com/restarone/violet_rails/pull/883


:dart: Step 2: Deploy feature branch to Heroku: User Acceptance Testing (UAT)

Once our Ruby/Node test suite passes we create a reference branch on this repository and merge your change to it. We create a reference branch on this repository so our Heroku deploy action has a HEAD reference on a branch that belongs to this repository.

Example PR for UAT: https://github.com/restarone/violet_rails/pull/885


:dart: Step 3: Test on Heroku

A product owner such as @donrestarone or a staff-level engineer (@Pralish , @alis-khadka ) will then independently test/vet the change on Heroku.

:handshake: UAT result

If the change is good and works as expected, we move on to the next step in the release pipeline

If the change is bad, we rinse-repeat Steps 2 and 3, to iterate on the feature branch till it passes UAT


:dart: Step 4: Canary deployment to restarone.solutions for regression testing and monitoring

Create the RC branch from the top of master and merge the feature branch to it.

Example PR: https://github.com/restarone/violet_rails/pull/866


:bird: Canary result

If the change is good, works as expected and there are no regressions, we move on to the next step in the release pipeline

If the change is bad, we scrap the rc branch and iterate on the feature branch we created in Step 2


:dart: Step 5: Deliver to production environments

When we are sure that the change has no Unintended Consequences :tm: -- we merge the rc branch to master which triggers an automated deployment to our production environments

Example PR: https://github.com/restarone/violet_rails/deployments

donrestarone commented 2 years ago

we should include this doc in our contributing guide: https://github.com/restarone/violet_rails/blob/master/CONTRIBUTING.md