In the case that a new change is so dramatic that it is hard to anticipate all of the potential side-effects, here is a protocol for rolling out these sensitive changes in a way that:
- Minimizes adverse impact on end users.
- Maximizes our responsiveness to these changes.
- Prepare a normal release.
- Prepare a rollback release.
- Roll the normal release out.
- In case of emergency, roll back.
Simply follow the steps in the publishing guide.
- Be on the new risky version branch.
- Run
npm run rollback $ROLLBACK_TARGET_VERSION
.
The rollback version will now be a branch and tag on the origin.
Ensure the rollback release has been built, and downloaded locally, fully ready to deploy with immediacy.
For a sensitive release, initially roll out to only 1% of Chrome users (since Chrome allows incremental rollout).
Monitor Sentry for any recognizable error logs.
Gradually increase the rollout percentage.
If a problem is detected, publish the roll-back release to 100% of users, identify the issue, fix it, and repeat this process with a new release.
This protocol is a worst-case scenario, just a way to be incredibly careful about our most sensitive possible changes.