Loop/Loop-client Release Process: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(→‎Releasing loop-client: Add section on how to release to staging)
Line 66: Line 66:
* mathjazz will then ensure verbatim gets updated.
* mathjazz will then ensure verbatim gets updated.


=Releasing loop-client=
= Releasing loop-client for staging =
If there's no branch for the current release:


The [https://github.com/mozilla/loop-client loop-client] repository is a mirror of the necessary parts from mozilla-central. It is automatically updated via a script in the repository, every hour (if necessary).
* Check to see if there were any string changes since the previous release.
* If there were, cut a branch before the string changes, and if required, merge/port across any additional (non-string) changesets.
* If not, then the release can be done from master.


Release process:
To do the actual release:


* Check [https://github.com/mozilla/loop-client loop-client] has all the required changes
* Check out the required changeset
* Update the CHANGELOG file
* Pull in the latest L10n changes:
 
  # Update the L10n repository
  cd loop-client-l10n
  git pull origin master
 
  # Change back to loop-client repo
  cd ../loop-client
  # Pull across L10n changes
  ./locale-update.py
 
At this stage, check:
 
# Diffs - to check the changes look sane
# git status - to check for any added locales (and if so, "git add" them)
 
  # Commit the L10n changes
  git commit -m "Update L10n from changeset <revision>" -a
 
* Update the CHANGELOG file:
** Add bug references
** Indicate if L10n were updated
** Note any configuration option changes/additions
** Note any configuration option changes/additions
* Checkout a fresh loop-client repo, make sure the directory name is `loop-client`, then
* Commit the CHANGELOG file
 
  git commit -m "Update changelog for <version>" CHANGELOG
 
* Push the changes


cd loop-client
  git push origin <branch>


# Replace '0.4.0 with the correct version
* Create the release
./create_release.sh 0.4.0


* The new release tag will be automatically pushed
  # Replace <version> with whatever the version is, e.g. 0.14.0
* File bugs for pushes to (use these templates):
  ./create_release.sh <version>
** [https://bugzilla.mozilla.org/enter_bug.cgi?assigned_to=nobody%40mozilla.org&bug_file_loc=http%3A%2F%2F&bug_ignored=0&bug_severity=normal&bug_status=NEW&cc=alexis%2Bbugs%40mozilla.com&cc=bwong%40mozilla.com&cc=dmose%40mozilla.org&cc=jbonacci%40mozilla.com&cc=mreavy%40mozilla.com&cc=rhubscher%40mozilla.com&cc=standard8%40mozilla.com&cc=tarek%40mozilla.com&cc=dwilson@mozilla.com&cf_blocking_b2g=---&cf_blocking_fennec=---&cf_fx_iteration=---&cf_fx_points=---&cf_status_b2g18=---&cf_status_b2g_1_1_hd=---&cf_status_b2g_1_2=---&cf_status_b2g_1_3=---&cf_status_b2g_1_3t=---&cf_status_b2g_1_4=---&cf_status_b2g_2_0=---&cf_status_b2g_2_1=---&cf_status_firefox31=---&cf_status_firefox32=---&cf_status_firefox33=---&cf_status_firefox34=---&cf_status_firefox_esr24=---&cf_status_firefox_esr31=---&cf_tracking_b2g18=---&cf_tracking_b2g_v1_2=---&cf_tracking_b2g_v1_3=---&cf_tracking_e10s=---&cf_tracking_firefox31=---&cf_tracking_firefox32=---&cf_tracking_firefox33=---&cf_tracking_firefox34=---&cf_tracking_firefox_esr24=---&cf_tracking_firefox_esr31=---&cf_tracking_firefox_relnote=---&cf_tracking_relnote_b2g=---&comment=We%27d%20like%20to%20deploy%20the%20loop-client%20%3Cversion%3E%20release%20to%20stage.%0D%0A%0D%0A%3Clink%20to%20release%2C%20e.g.%20https%3A%2F%2Fgithub.com%2Fmozilla%2Floop-client%2Freleases%2Ftag%2F0.4.0%3E%0D%0A%0D%0A%3Cpossibly%20include%20info%20about%20timescales%3E%0D%0A%0D%0A%3Cinclude%20any%20info%20about%20required%20configuration%20changes%3E&component=Operations%3A%20Deployment%20Requests&contenttypemethod=autodetect&contenttypeselection=text%2Fplain&defined_groups=1&flag_type-37=X&flag_type-4=X&flag_type-5=X&flag_type-607=X&flag_type-708=X&flag_type-720=X&flag_type-721=X&flag_type-737=X&flag_type-781=X&flag_type-787=X&flag_type-791=X&flag_type-800=X&flag_type-803=X&flag_type-809=X&flag_type-825=X&flag_type-836=X&flag_type-842=X&flag_type-846=X&flag_type-853=X&flag_type-856=X&flag_type-857=X&flag_type-864=X&form_name=enter_bug&maketemplate=Remember%20values%20as%20bookmarkable%20template&op_sys=All&priority=--&product=Mozilla%20Services&rep_platform=All&short_desc=Please%20deploy%20Loop-Client%20%3Cversion%3E%20code%20to%20stage&target_milestone=---&version=unspecified staging]
** [https://bugzilla.mozilla.org/enter_bug.cgi?assigned_to=nobody%40mozilla.org&bug_file_loc=http%3A%2F%2F&bug_ignored=0&bug_severity=normal&bug_status=NEW&cc=alexis%2Bbugs%40mozilla.com&cc=anthony.s.hughes%40gmail.com&cc=bwong%40mozilla.com&cc=dmose%40mozilla.org&cc=jbonacci%40mozilla.com&cc=mreavy%40mozilla.com&cc=rhubscher%40mozilla.com&cc=standard8%40mozilla.com&cc=tarek%40mozilla.com&cc=dwilson@mozilla.com&cf_blocking_b2g=---&cf_blocking_fennec=---&cf_fx_iteration=---&cf_fx_points=---&cf_status_b2g18=---&cf_status_b2g_1_1_hd=---&cf_status_b2g_1_2=---&cf_status_b2g_1_3=---&cf_status_b2g_1_3t=---&cf_status_b2g_1_4=---&cf_status_b2g_2_0=---&cf_status_b2g_2_1=---&cf_status_firefox31=---&cf_status_firefox32=---&cf_status_firefox33=---&cf_status_firefox34=---&cf_status_firefox_esr24=---&cf_status_firefox_esr31=---&cf_tracking_b2g18=---&cf_tracking_b2g_v1_2=---&cf_tracking_b2g_v1_3=---&cf_tracking_e10s=---&cf_tracking_firefox31=---&cf_tracking_firefox32=---&cf_tracking_firefox33=---&cf_tracking_firefox34=---&cf_tracking_firefox_esr24=---&cf_tracking_firefox_esr31=---&cf_tracking_firefox_relnote=---&cf_tracking_relnote_b2g=---&comment=We%27d%20like%20to%20deploy%20the%20loop-client%20%3Cversion%3E%20release%20to%20production.%0D%0A%0D%0A%3Clink%20to%20release%2C%20e.g.%20https%3A%2F%2Fgithub.com%2Fmozilla%2Floop-client%2Freleases%2Ftag%2F0.4.0%3E%0D%0A%0D%0A%3Cpossibly%20include%20info%20about%20timescales%3E%0D%0A%0D%0A%3Cinclude%20any%20info%20about%20required%20configuration%20changes%3E%0D%0A%0D%0A%3Cadd%20stage%20bug%20in%20deps%3E&component=Operations%3A%20Deployment%20Requests&contenttypemethod=autodetect&contenttypeselection=text%2Fplain&defined_groups=1&dependson=%3Cadd%20stage%20bug%3E&flag_type-37=X&flag_type-4=X&flag_type-5=X&flag_type-607=X&flag_type-708=X&flag_type-720=X&flag_type-721=X&flag_type-737=X&flag_type-781=X&flag_type-787=X&flag_type-791=X&flag_type-800=X&flag_type-803=X&flag_type-809=X&flag_type-825=X&flag_type-836=X&flag_type-842=X&flag_type-846=X&flag_type-853=X&flag_type-856=X&flag_type-857=X&flag_type-864=X&form_name=enter_bug&maketemplate=Remember%20values%20as%20bookmarkable%20template&op_sys=All&priority=--&product=Mozilla%20Services&rep_platform=All&short_desc=Please%20deploy%20Loop-Client%20%3Cversion%3E%20code%20to%20production&target_milestone=---&version=unspecified production].


Further info: https://etherpad.mozilla.org/loop-client-release
* File a bug for ops to create the staging release (this may be automated soon).
** Use [https://bugzilla.mozilla.org/show_bug.cgi?id=1135053 this bug] as a template

Revision as of 15:29, 23 February 2015

Background

Loop-client is the "standalone" part of Firefox Hello. It consists of hosted pages that can be accessed from any browser.

The definitive source files are in mozilla-central, mainly under the standalone directory, however some of the files are shared with desktop.

The source files for the standalone are automatically extracted into the loop-client repository every hour.

Release Cycle

loop-client typically has an approximately four-week release cycle (two weeks dev, two weeks for L10n and release). Current release schedules are tracked on the calendar.

Cycle (days are approximate, depending on required timings and other activities:

  • Day 1
    • Development of loop-client continues in mozilla-central
  • Day 14
    • A new branch is created for the next release
    • Strings are passed to L10n for translation
  • Day 28
    • L10n strings are imported
    • The branch is tagged
  • Then (these may happen on different days, depending on availability of QA.
    • The branch is released to ops to push to staging
    • QA tests staging
    • Once verified, ops deploy to production
    • QA verifies production

Creating a loop-client branch for release to L10n

A new branch is required if there are string changes since the previous release. If there are no string changes, then a branch may be skipped, unless string changes occur during the cycle. If so, a branch should be cut from before any string changes occurs.

To create a branch:

 git clone git@github.com:mozilla/loop-client.git
 cd loop-client
 
 # Checkout master, or appropriate revision to branch from
 git checkout master
 
 # Create a new branch (replace 0.14 with the main version of the branch)
 git checkout -b 0.14.x
 
 # Push the new branch to the remote
 git push origin 0.14.x

To update L10n

  • First talk to mathjazz in #l10n; confirm that verbatim has all the strings checked in for Hello.
  • Then copy the en-US files to the verbatim directory.
 # Clone or update as needed
 git clone git@github.com:mozilla/loop-client-l10n.git
 
 # Copy the en-US file (note the change from - to _)
 cp loop-client/content/l10n/en-US/loop.properties loop-client-l10n/l10n/en_US/loop.properties
 
 # Verbatim also needs it in the templates directory
 cp loop-client/content/l10n/en-US/loop.properties loop-client-l10n/l10n/templates/loop.properties
 
 # Now commit and push
 cd loop-client-l10n
 git commit -m "Merge latest en-US strings from loop-client commit <revision>" -a
 git push origin master
  • Tell mathjazz the push is complete
  • mathjazz will then ensure verbatim gets updated.

Releasing loop-client for staging

If there's no branch for the current release:

  • Check to see if there were any string changes since the previous release.
  • If there were, cut a branch before the string changes, and if required, merge/port across any additional (non-string) changesets.
  • If not, then the release can be done from master.

To do the actual release:

  • Check out the required changeset
  • Pull in the latest L10n changes:
 # Update the L10n repository
 cd loop-client-l10n
 git pull origin master
 
 # Change back to loop-client repo
 cd ../loop-client
 # Pull across L10n changes
 ./locale-update.py

At this stage, check:

  1. Diffs - to check the changes look sane
  2. git status - to check for any added locales (and if so, "git add" them)
 # Commit the L10n changes
 git commit -m "Update L10n from changeset <revision>" -a
  • Update the CHANGELOG file:
    • Add bug references
    • Indicate if L10n were updated
    • Note any configuration option changes/additions
  • Commit the CHANGELOG file
 git commit -m "Update changelog for <version>" CHANGELOG
  • Push the changes
 git push origin <branch>
  • Create the release
 # Replace <version> with whatever the version is, e.g. 0.14.0
 ./create_release.sh <version>
  • File a bug for ops to create the staging release (this may be automated soon).