Introduction

In certain cases it is necessary to be able to stage new click packages before their official release in the stable store. Situation like this happens when new features are added to the rc-proposed images and introduced in a new framework which is not yet available in any stable image. In such a case, click packages that use the new features and depend on the unreleased framework need to be somehow staged to be made available to dogfooders and testers without disrupting normal stable phone users.

The currently implemented solution is click-locking and staging the click in the store's upload queue. In this process, we manually lock down selected click packages on snakefruit from click-sync and build rc-proposed images with those pre-installed.

Rationale

Ideally, a click application that depends on a new framework and is published to the store should not be visible for normal users until their phones receive the framework in mention. Sadly, the current implementation of the store allows only one version being visible. This means that if a new version is published that requires an unreleased framework, the application is no longer visible to all stable phone users (those without the new framework).

The store does incorporate logic to allow multiple channels for a single applications, so it could allow an explicit staging place for new apps - sadly our click format is not compatible with those features. We would either have to migrate clicks into snaps or modify click to support the required bits. Both solutions are very time-consuming.

The click locking mechanism has multiple pros. One of them is the ease of implementation, as basically all the elements were in place and we're not really intrusive with new changes. It also gives some potential flexibility.

Process

For locking down the click package in rc-proposed:

For image promotion from rc-proposed/rc to stable:

For pushing a new version of an already staged package:

LandingTeam/StagingClicks (last edited 2016-03-18 15:19:40 by sil2100)