This repository has been archived by the owner on May 10, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 265
So, you wanna hotfix, eh?
ozten edited this page Apr 18, 2013
·
4 revisions
When critical bugs occur in production, or in a train that's being tested, and we decide to fix them, we call it a "hotfix". There's a process for this, and this page explains it.
When hotfixes are not related to security issues that could cause users harm if they were public, here's how it works:
- Ensure a github issue is opened for the bug. The bug should include: 1. the clearly stated user visible manifestation of the issue 2. the estimated percentage of users affected 3. the estimated complexity/risk of the fix
- write an email involving QA and ops, pointing at the issue
- come to quorum on whether the bug should allowed to ship, should be hotfixed, or should derail the train
- if a hotfix is desired, write the hotfix
- open a pull request to merge the hotfix into the rolling train
- have a colleague review the pull request, and merge it into the train
- update the ChangeLog documenting your hotfix, i.e.:
(hotfix 2012.04.03) Fixed foo: #1234
- update the Release field in
scripts/browserid.spec
- push the above two things (probably together in one commit) up to the appropriate branch in our public repo
- update the stage deployment ticket, mentioning the version, sha, and location where the code resides. Also include a brief one-line description of the differences between the previous version (what is the hotfix for?)
- make sure ops knows to deploy, make sure QA knows to test, go have a beer.
- Follow up with OPs to make sure HotFix is deployed. Follow up with QA to make sure the HotFix is tested and works as expected: "it solves the problem"
- Repeat steps 10 - 12 for production.
What if the hotfix addresses a security issue that could hurt users if it were made public before it were patched?
Well, use exactly the same steps as above, EXCEPT:
- For step #1 - use bugzilla and mark the bug as "private", instead of using github issues
- For step #9, use the private browserid repo
- for step #10, use the proper URL for the private repo
Exactly the same steps as above, except you must open a new bugzilla ticket, and ops will first deploy to our staging environment (pausing all testing) so QA can vet the change before we take it live into production.