Firefox/Go Faster/Releasing an add-on mechanics

From MozillaWiki
Jump to: navigation, search
Warning signWarning: 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 signWarning: This document does not yet contain how to handle multiple add-ons. Please talk to ianb and Standard8 before attempting to proceed.

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


This process assumes you have a xpi that is ready for release.

Uploading the xpi

Setting up Balrog

Warning signWarning: Multiple system add-ons are released together as one bundle which should be tested. Take account of this when updating the template files.

When experimenting/doing initial setup, it is suggested to use the dev servers for Balrog:

Once you're confident of the configuration, you can then copy this across to production:

Set up a release in Balrog

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.
    • 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.

Set up a rule in Balrog

Warning signWarning: Rules go live as soon as they are created or updated.

A note about channels:

  • beta and release are production channels. Do not use these for testing.
  • For testing system addons, we are using the beta-sysaddon and release-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"
    • More background on rules at Balrog pages
    • 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.

Verifying Balrog

Testing via url:

Testing in Firefox:

  • Note: currently system add-ons updates don't apply until you restart Firefox.
  • In `about:config` open `extensions.systemAddon.update.url` and change %CHANNEL% to `release-sysaddon`
  • 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