Consider a "Deploy on Release" model #1527
Labels
chore
Chores and tasks for code cleanup, dev experience, admin/configuration settings, etc.
infrastructure
Terraform, Azure, etc.
Milestone
Today, our release process requires a number of manual steps, and at least 1 Pull Request requiring interaction from at least 2 people (the author and an approver). This works well but is cumbersome, and could be more efficient especially for getting urgent or timely changes out.
Further, we have 3 separate "versions" of the code across the
dev
,test
, andprod
branches. The explicit branch naming makes it easy to see where each environment is, but it also means we're constantly merging and needing to remember the state of each branch (e.g. istest
ready to release toprod
? Did we merge that fix intotest
yet?)The final step in our release process today is to tag and create a GitHub release.
I propose we invert this model and instead make the tagging and GitHub release the initial step that kicks off the rest of the deployment.
Proposal
Branches
dev
,test
, andprod
main
dev
would essentially be renamed tomain
but otherwise function the sameDeployments
main
deploys to thedev
environment (just like merging todev
today)test
environmentprod
environmentDiscussion
Creating a GitHub Release requires an associated
git tag
.Today we tag the
prod
branch at the end of the process, just before creating the GitHub Release.Under this new proposed model:
main
main
branch, as bothtest
andprod
releases are taggedsacrt
orveterans
)release == tag == commit
Pros
test
/prod
independent of where or whether the commit is inmain
Cons
Open questions
main
enough? Look at the beta tag protections?main
?pytest
,cypress
,pre-commit
,codeql
etc.Additional context
This model is typical of how we deploy Python packages, e.g.
eligibility-api
.This model gets us closer to going full CI/CD #1253
The text was updated successfully, but these errors were encountered: