Firefox/Go Faster/Releasing an add-on mechanics: Difference between revisions

(Update ftp details and basic access information.)
 
(5 intermediate revisions by one other user not shown)
Line 14: Line 14:
** Talk to Release Engineering team for access
** Talk to Release Engineering team for access


== Procedure
== Procedure ==


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


* Get the xpi signed, e.g. [https://bugzilla.mozilla.org/show_bug.cgi?id=1249764 clone this bug]
* Get the xpi signed, e.g. [https://bugzilla.mozilla.org/show_bug.cgi?id=1249764 clone this bug]
* Upload the signed xpi to ftp in the <code>[https://ftp.mozilla.org/pub/system-addons/ /pub/system-addons/]</code> directory.
* Upload the signed xpi to ftp in the <code>[https://ftp.mozilla.org/pub/system-addons/ /pub/system-addons/]</code> directory.
** Use a sub-directory appropriate for the add-on.
** Use a sub-directory appropriate for the add-on.
* Generate Balrog template
 
** Under Releases, search for `SystemAddons`
=== Setting up Balrog ===
** Download the existing template
 
*** Update fileUrl, default https
{{warning|Multiple system add-ons are released together as one bundle which should be tested. Take account of this when updating the template files.}}
*** Update the hashValue (`shasum -a 512 <file>`)
 
*** Update filesize (bytes, `ls -la <file>`)
When experimenting/doing initial setup, it is suggested to use the dev servers for Balrog:
*** Update version
 
*** Update name if necessary
* https://aus4-admin-dev.allizom.org/ with update urls at https://aus4-dev.allizom.org/update/3/SystemAddons/45.0/20160218171844/default/en-US/beta-cdntest1/default/default/default/update.xml
** Upload template to either updated release or new release.
 
** Under Rules, search for `SystemAddons`
Once you're confident of the configuration, you can then copy this across to production:
*** Create/Update as necessary
 
** Example update url `https://aus5.mozilla.org/update/3/SystemAddons/45.0/20160218171844/default/en-US/beta-cdntest1/default/default/default/update.xml`
* For production, sign into Balrog at https://aus4-admin.mozilla.org/
 
=== 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 <code>SystemAddons</code>.
* 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 (<code>shasum -a 512 <file></code>).
** Update filesize (bytes, <code>ls -la <file></code>).
** Update version to the version number of the add-on.
** Update the name, use something like <code>"SystemAddons-<addon shortname><addon shortversion>"</code> and append extra add-on sections for each add-on.
*** e.g. <code>SystemAddons-hello112</code>
*** 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. <code>SystemAddons-hello112.json</code>
* Back in Balrog, select "Add a new release"
** Enter the name as matching the name in the file.
** Enter the product as <code>SystemAddons</code>
** 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|Rules go live as soon as they are created or updated.}}
 
A note about channels:
 
* <code>beta</code> and <code>release</code> are production channels. Do not use these for testing.
* For testing system addons, we are using the <code>beta-sysaddon</code> and <code>release-sysaddon</code> 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 <code>SystemAddons</code>.
** 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#What.27s_in_a_rule.3F|Balrog pages]]
** Leave blank: Alias, Locale, Distribution, Build Target, OS Version, Dist Version, Whitelist, Header Architecture
** Product: <code>SystemAddons</code>
** Channel: <code>beta-sysaddon</code> (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: <code>100</code>
** 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 <code>minor</code>
** 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:
* You can check the data via a url: https://aus5.mozilla.org/update/3/SystemAddons/49.0.1/20160922113459/default/en-US/release-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.
* In `about:config` open `extensions.systemAddon.update.url` and change %CHANNEL% to `release-sysaddon`
* Add-on manager activity can be monitored by setting <code>extensions.logging.enabled</code> to true.
* You can force an add-on update with the [https://addons.mozilla.org/en-US/firefox/addon/timer-fire/ 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
Confirmed users
534

edits