Reading/Web/Release process/experiment

Rationale

edit

Previously, all extensions were developed in the master branch, which was deployed to the beta cluster continuously, and released following the release train.

This resulted in work in progress (reviewed and merged, but not signed off by design or product) being released to production when it shouldn't have, creating quality and coordination issues in the team's work.

In order to decouple the development process from the release process, so that we can develop and share the work in progress with design and product without worrying about that it will be pushed to production, we are following the release process detailed below.

Projects under the release process

edit

What is it

edit

Development

edit
  • For all projects under the release process, development in Gerrit is done on the dev branch.
  • Such branch is pulled every 10 minutes to the reading web staging environment.
  • The staging environment is used for reviewing and sign off.
  • Beta cluster is used for pre-production testing when releasing.
  • Tests run by zuul on patches in dev are matched against the `dev` branch of any other extensions. For example if MobileFrontend and Gather browser and unit tests will be run together against the dev branch of each of these extensions as outlined here. See T116221 for further information.

Releasing

edit

When to release

edit

Use good judgement when deciding what to release and the release cadence. In general if an extension is in active development we could expect a release cadence that matches the sprint cadence of the teams working on it (for us it is 2 weeks).

When there's a critical bug in production, we fix it on master and swat deploy it, and rebase the dev branch with the hot fix.

Version numbers follow the SemVer specification.

Creating release notes and merging

edit

Follow the instructions on How to Release. Release notes are stored in a History file in the repository, like this one.

How to make an extension follow the release process

edit
  1. Add dev branch in Gerrit and migrate default branch from master to dev.
  2. Add continuous deploys for dev branch to a staging environment.

F.A.Q.

edit

Who can release?

edit

In general the tech lead of the Reading Web team will be in charge of releasing the extensions that the Reading Web team, or appointing to someone to do so.

If you want to do a release of some extension create a Phabricator task asking for it and the reasons and add the project of the extension you would like to see a release of. Pinging team members on the irc channel #wikimedia-mobile would also be helpful.

Can I directly merge to master?

edit

TODO

Ask your questions on the talk page.

edit