Firefox/Go Faster/Releasing an add-on mechanics
Jump to navigation
Jump to search
Warning: This document and process is still in a very active exploration and discovery phase. It has not been tested fully, and may change at any time. ianb and Standard8 know most about the process
Warning: This document does not yet contain how to handle multiple add-ons. Please talk to ianb and Standard8 before attempting to proceed.
Warning: Multiple system add-ons are released together as one bundle which should be tested. Take account of this when updating the template files.


This document only contains details about the mechanics for releasing. You will need to discuss with release drivers and other folks about being able to actually do a release.
Access Rights
To upload and release add-ons, you'll need access to:
- ftp (
/pub/system-addons/
)- Talk to the Cloud Services team for access
- balrog via VPN
- Talk to Release Engineering team for access
Procedure
This process assumes you have a xpi that is ready for release.
Uploading the xpi
- Get the xpi signed, e.g. clone this bug
- Upload the signed xpi to ftp in the
/pub/system-addons/
directory.- Use a sub-directory appropriate for the add-on.
Setting up Balrog

- Sign into Balrog at https://aus4-admin.mozilla.org/
First step is to generate the template for the System add-on update release. This contains detail about the xpis, and which platform(s) they are for.
- Under Releases, search for
SystemAddons
. - Find the latest release and download the existing template.
- Update the fileUrl to point to the location on ftp. The url must be https.
- Update the hashValue (
shasum -a 512 <file>
). - Update filesize (bytes,
ls -la <file>
). - Update version to the version number of the add-on.
- Update the name, use something like
"SystemAddons-<addon shortname><addon shortversion>"
and append extra add-on sections for each add-on.- e.g.
SystemAddons-hello112
- We might need to review the naming eventually, but for now it'll do.
- e.g.
- Save the template with the filename matching the name in the file (e.g.
SystemAddons-hello112.json
- Back in Balrog, select "Add a new release"
- Enter the name as matching the name in the file.
- Enter the product as
SystemAddons
- Under data, select the file you just created.
- Select "Save Changes".
- The new release should appear in the list.
At this stage, the details for the add-on release have been created. Now you need to create a rule for it to be picked up.
A note about channels:
beta
andrelease
are production channels. Do not use these for testing.- For testing system addons, we are using the
beta-sysaddon
andrelease-sysaddon
channels- This is designed to avoid testing on the same channel that QA uses for updates.
- If you need to test something special, it may be useful to use a different channel.
To add a rule:
- Under Rules, search for
SystemAddons
.- You can use the results to check your expectations of values to put in fields.
- Select "Add a new rule"
- Leave blank: Alias, Locale, Distribution, Build Target, OS Version, Dist Version, Whitelist, Header Architecture
- Product:
SystemAddons
- Channel:
beta-sysaddon
(or the one you want to use) - Mapping: The name of the release you created earlier, should auto-complete.
- Rate: The rate at which you wish to push the release out (100 = full, 0 = none)
- Priority:
100
- Version: The version of Firefox the add-ons should be released to.
- Build ID: The build id of Firefox you wish to push the add-ons to. You can leave this blank to push it to all builds of versions specified in the version field.
- Update Type: Leave as
minor
- Comment: Enter a comment about the release if necessary, e.g. something exceptional.
- Select "Save Changes"
The changes are live within a few seconds.
Testing via url:
- You can check the data via a url: https://aus5.mozilla.org/update/3/SystemAddons/45.0/20160218171844/default/en-US/beta-sysaddon/default/default/default/update.xml
- You'll need to replace the version, build id and maybe the channel in the url above.
Testing in Firefox:
- Note: currently system add-ons updates don't apply until you restart Firefox.
- You may need to change
/path/to/binary/folder/browser/defaults/preferences/prefs.js
to point to the specified channel. - Add-on manager activity can be monitored by setting
extensions.logging.enabled
to true. - You can force an add-on update with the timer-fire add-on
- Using "Tools > Fire Timer > Add-on Update"
- If you don't force, you'll need to wait for the update - one check occurs each day.
- about:support shows the current add-on version