-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Description
Proposal
We could dramatically increase the amount of time human users spend with the to-be-released code by running it on dogfood between code freeze and release day.
- This creates a forcing function to ensure that bugs are quickly fixed and cherry-picked
- It gives product and marketing a stable place to see the “final draft” of features in the release
- It will give us much higher confidence that big, embarrassing, “ship stopper” bugs are not present.
- Less frequent deploys will make it easier to spot resource leaks or other problems of attrition
Implementation Details
Deploy scripts contain logic to switch from main to the latest release branch during the freeze.
- Algorithm:
- list branches and filter for
release/(\d+\.\d+), then sort by major/minor to get the latest release. - If tag
v<MAJOR>.<MINOR>.0exists, we deploy frommain. If not we deploy fromrelease/<MAJOR>.<MINOR>
- list branches and filter for
- Embodiment
- Above algorithm is implemented as a bash script in our
scriptsdirectory. - A new job,
should-deployin theci.yamlGitHub actions calls the script and determines whether we should deploy - The
deployjob is predicated on the output ofshould-deploy
- Above algorithm is implemented as a bash script in our
Special care needs to be taken with container registry image tags. Dogfood is always deployed from ghcr.io/coder/coder-preview:latest.
latestshould ALWAYS track themainbranch, e.g. we still build and push thelatesttag onmainalways even if we're not deploying it- if another branch is being deployed instead, it should NEVER be pushed to to the
latesttag
- if another branch is being deployed instead, it should NEVER be pushed to to the
- a new tag
dogfoodshould always track the latest build in whatever branch we're using for dogfood, eithermainor arelease/branch - Dogfood should be updated to use the
dogfoodtag in the values file
Relates to #1024
matifali
Metadata
Metadata
Assignees
Labels
No labels