Loop/Loop-client Release Process
Contents
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.
Automatic updating of loop-client
The master branch of Loop-client is automatically updated from mozilla-central by a script each hour.
The script lives in loop-client repository and is called extract_from_hg.py.
The development server runs a cronjob ever hour which runs the script on the loop-client directory on the server (using the mozilla-central hg clone as a base). This also ensures that the development server is automatically updated as well.
Release Cycle
loop-client releases happen when necessary. If strings have changed, there is typically an approximately 2 week cycle to allow them to translate. Current release schedules are tracked on the calendar.
What to Release?
- If no string changes have occurred since the previous release:
- If string changes have occurred, either:
- Start an L10n release with over a 2 to 3 week cycle
- or, if there are small bug fixes to ship sooner, create/use branch from previous release and port only the minor changes
Automatic updating of loop-client
The master branch of Loop-client is automatically updated from mozilla-central by a script each hour.
The script lives in loop-client repository and is called extract_from_hg.py.
The development server runs a cronjob ever hour which runs the script on the loop-client directory on the server (using the mozilla-central hg clone as a base). This also ensures that the development server is automatically updated as well.
Start an L10n release
- Ensure CHANGELOG is up to date on latest master.
- Next talk to mathjazz in #l10n; confirm that all the strings for Hello are checked in, ready for an L10n release.
- Pull the latest l10n strings into loop-client
- 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.
- Decide on the version number
- Version numbers are generally arbitrary, however, we've so far been following the major.minor.sub version scheme. For releases from the same branch, major and minor stay the same. When a new release occurs with string changes, the minor version gets bumped.
- Create a branch from the latest revision of loop-client's master, i.e. the where the loop.properties for en-US is the same as what was copied to loop-client-l10n.
git checkout -b 0.14.x git push origin 0.14.x
- Send an email to mozilla.dev.l10n, with a deadline that is at least 2 weeks in the future, including 2 weekends.
- Subject: "Several new strings for Firefox Hello Standalone now in verbatim"
- Body template:
Hi All, We've added a few new strings to the Firefox Hello standalone app. They are in verbatim and pontoon and ready for you to localise. [Add information about what the strings will relate to] Deadline: [Insert date] Updated words: [This can be obtained from verbatim once its synced - look for old previously completed locales, and see what the defect number now is] Verbatim: https://localize.mozilla.org/projects/loop/
How to merge latest L10n changesets
This is required for the sections below.
- 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
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:
- Decide on the version number
- Version numbers are generally arbitrary, however, we've so far been following the major.minor.sub version scheme. For releases from the same branch, major and minor stay the same. When a new release occurs with string changes, the minor version gets bumped.
- Check out the required changeset or branch
- Merge latest L10n changesets
- Update the CHANGELOG file:
- Add version and date
- 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, use one of the previous bugs as a template:
- Update the bug with the specifics of any configuration changes if needed.