-
Notifications
You must be signed in to change notification settings - Fork 23
Deployment schedule
Since September 2014, we have been following a calendar for deployment in which we push new code to the prod site (www.buttonweavers.com) monthly. Starting in November 2016, we will be doing pre-prod testing over the course of each month using two sites: the dev site (dev.buttonweavers.com), where any code can be installed provided it passes automated testing, and the staging site (staging.buttonweavers.com), where code destined for the next month's prod release is tested.
The rest of this page describes the deployment and merge schedule.
On day 2 of each month, we push new code to prod. To support that schedule, we test changes on individual per-change dev sites. During the first half of the month, any changes which are approved by one person other than the original committer, and not vetoed by anyone after a period of a few days, are merged into master. Around the middle of each month, we stop accepting new merges to master. At that point, we push from master to the staging site, and in the latter half of each month, we look for regressions on staging and prepare for the release.
At any time during the month, new code can be tested on a standalone dev site --- this code is tested prior to being merged, which keeps it independent of the master -> staging -> prod pipeline. Standalone dev sites are not guaranteed to be stable or functional. Standalone dev sites are loaded using a copy of the staging database, which is downloaded at the beginning of each month and maintained with all DB changes which have been merged into master.
- days 02 - 03: initial push/test to prod:
- on day 02, push code to prod
- merge pulls with bugfixes for code currently on prod
- push bugfixes merges to staging aggressively, for testing, and make sure bugfixes also get pushed to dev for consistency.
- day 04: make a call about how the push went:
- based on outstanding bug reports from prod, choose one of:
- The push went badly: schedule a second push to prod, sometime between the next day and a week out. Continue to aggressively test fixes on staging and dev.
- The push went well: end the merge freeze and move to a development footing
- based on outstanding bug reports from prod, choose one of:
- any time during the month: new development
- as changes are proposed, approve them for dev site testing based on the minimal dev site acceptance criteria
- for each change which passes the minimal criteria:
- stand up a one-off dev site with the change
- link the change from the dev site index
- link the change from the master issue for the next month's release, so that people can get e-mail notification of the new dev site
- days 04 - 18: merge approved changes
- for each issue to be merged, require:
- the change to be on a dev site for at least 3 days to give people a chance to test
- at least one person to weigh in that they have tested the proposed change and it is good
- no dissenters weighing in that the proposed change should not be made
- in case of disagreements, discuss and reach a rough consensus
- for each issue to be merged, require:
- days 19 - 01: prepare for push to prod by testing on staging:
- on day 19, do a pull from master to staging, and load new code onto the staging site
- after day 20, do not merge any pulls to master which have new functionality not yet on staging
- merge and load pulls which fix/complete functionality currently on staging
- push fixes to staging aggressively, for testing
Various tickets contain a full log of pushes to sites --- dev, prod, jenkins --- this is a log of pushes to prod and changes to the merge policy for new code, and does not contain code pushes to dev or jenkins:
- 2014-09 release:
- 2014-09-02: code pushed to prod
- 2014-09-04: start of next dev period
- 2014-10 release:
- 2014-09-27: merge freeze
- 2014-10-02: code pushed to prod
- 2014-10-04: start of next dev period
- 2014-11 release:
- 2014-10-23: merge freeze
- 2014-11-02: code pushed to prod
- 2014-11-04: start of next dev period
- 2014-12 release (cancelled):
- 2014-11-23: merge freeze
- 2014-12-01: prod push delayed to 2014-12-03
- 2014-12-04: prod push delayed to 2014-12-06
- 2014-12-06: prod push cancelled; start of next dev period
- 2015-01 release:
- 2014-12-24: merge freeze
- 2015-01-02: code pushed to prod
- 2015-01-04: start of next dev period
- 2015-02 release:
- 2015-01-24: merge freeze
- 2015-02-02: code pushed to prod
- 2015-02-04: start of next dev period
- 2015-03 release:
- 2015-02-23: merge freeze
- 2015-03-02: code pushed to prod
- 2015-03-18: start of next dev period (no reason for delay)
- 2015-04 release:
- 2015-03-30: merge freeze
- 2015-04-06: code pushed to prod
- 2015-04-08: start of next dev period
- 2015-05 release:
- 2015-04-28: merge freeze
- 2015-05-02: code pushed to prod
- 2015-05-04: start of next dev period
- 2015-06 release:
- 2015-05-24: merge freeze (effectively)
- 2015-06-04: code pushed to prod
- 2015-06-06: start of next dev period
- 2015-07 release:
- 2015-06-28: merge freeze
- 2015-07-02: code pushed to prod
- 2015-07-04: start of next dev period
- 2015-08 release:
- 2015-07-23: merge freeze
- 2015-08-02: code pushed to prod
- 2015-08-04: start of next dev period
- 2015-09 release:
- 2015-08-28: merge freeze
- 2015-09-02: code pushed to prod
- 2015-09-04: start of next dev period
- 2015-10 release:
- 2015-09-25: merge freeze
- 2015-10-02: code pushed to prod
- 2015-10-04: start of next dev period
- 2015-11 release:
- 2015-11-03: merge freeze
- 2015-11-06: code pushed to prod
- 2015-11-09: start of next dev period
- 2015-12 release (cancelled):
- 2015-11-30: merge freeze
- 2014-12-01: prod push cancelled; start of next dev period
- 2016-01 release:
- 2015-12-31: merge freeze
- 2016-01-03: attempted prod push (reverted)
- 2016-01-05: code pushed to prod
- 2016-01-10: start of next dev period
- 2016-02 release: #1915
- 2016-01-28: merge freeze
- 2016-02-02: code pushed to prod
- 2016-02-04: start of next dev period
- 2016-03 release: #1941
- 2016-02-28: merge freeze
- 2016-03-04: code pushed to prod
- 2016-03-06: start of next dev period
- 2016-04 release: #1965
- 2016-03-28: merge freeze
- 2016-04-06: code pushed to prod
- 2016-04-09: start of next dev period
- 2016-05 release: #1980
- 2016-04-28: merge freeze
- 2016-05-02: code pushed to prod
- 2016-05-04: start of next dev period
- 2016-06 release: #1986
- 2016-05-28: merge freeze
- 2016-06-02: code pushed to prod
- 2016-06-06: start of next dev period
- 2016-07 release: #2056
- 2016-07-02: merge freeze
- 2016-07-04: code pushed to prod
- 2016-07-06: start of next dev period
- 2016-08 release: #2062
- 2016-07-28: merge freeze
- 2016-08-02: code pushed to prod
- 2017-01 release: #2132
- 2016-11-06: start of dev period
- 2017-01-15: code pushed to prod
- 2017-03 release: #2153
- ?
- 2017-05-02: code pushed to prod
- 2017-08 release: #2215
- 2017-05-04: start of dev period
- 2017-07-23: merge freeze
- 2017-08-02: code pushed to prod
- 2017-10 release: #2246
- 2017-08-04: start of dev period
- 2017-09-21: merge freeze
- 2017-10-02: code pushed to prod
- 2017-11 release: #2267
- 2017-10-04: start of dev period
- 2017-11-03: merge freeze
- 2017-11-05: code pushed to prod
- 2017-12 release: #2295
- 2017-11-07: start of dev period
- 2017-12-03: merge freeze
- 2017-12-06: code pushed to prod
- 2018-01 release: #2309
- 2017-12-08: start of dev period
- 2017-12-26: merge freeze
- 2018-01-06: code pushed to prod
- 2018-04 release: #2327
- 2018-01-09: start of dev period
- 2018-04-??: merge freeze
- 2018-04-15: code pushed to prod
- 2018-06 release: #2371
- 2018-04-17: start of dev period
- 2018-06-24: merge freeze
- 2018-06-29: code pushed to prod
- 2018-09 release: #2379
- 2018-07-01: start of dev period
- 2018-09-01: merge freeze
- 2018-09-03: code pushed to prod
- 2018-10 release: #2397
- 2018-09-05: start of dev period
- 2018-10-01: merge freeze
- 2018-10-13: code pushed to prod
- 2018-11 release: #2407 (Ubuntu Xenial upgrade)
- 2018-10-15: start of dev period
- 2018-11-14: merge freeze
- 2018-11-16: code pushed to prod
- 2019-03 release: #2438
- 2018-11-18: start of dev period
- 2019-03-10: merge freeze
- 2019-03-15: code pushed to prod
- 2019-05 release: #2456
- 2019-03-17: start of dev period
- 2019-05-12: merge freeze
- 2019-05-14: code pushed to prod
- 2019-10 release: #2472
- 2019-05-16: start of dev period
- 2019-08-21: merge freeze
- 2019-10-05: code pushed to prod
- 2020-02 release: #2526
- I'm going to stop tracking "start of dev period" (aka "end of previous merge freeze"), because it's not useful
- 2020-02-04: merge freeze
- 2020-02-05: code pushed to prod
- 2020-04 release: #2546
- 2020-04-13: merge freeze
- 2020-04-18: code pushed to prod
- 2020-08 release: #2577
- 2020-08-10: merge freeze
- 2020-08-17: code pushed to prod
- 2020-09 release: #2621
- 2020-09-21: merge freeze
- 2020-09-28: code pushed to prod
- 2021-01 release: #2694
- 2021-01-18: merge freeze
- 2021-02-08: code pushed to prod
- 2021-04 release: #2715
- 2021-04-12: merge freeze
- 2021-04-19: code pushed to prod
- 2021-09 release: #2733
- 2021-09-06: merge freeze
- 2021-09-11: code pushed to prod
- #2786 - deployments to staging
- #700 - deployments to production