Announcing channel tracks for long-term stable snaps

Facundo Batista facundo.batista at canonical.com
Wed Feb 15 16:46:21 UTC 2017


Hola!

To publish stable snaps of different versions at the same time, like Go 1.6 and 1.7, we now have ‘channel tracks’ in beta.

Each track has its own set of risk-based channels: stable, candidate, beta, edge. So for example, you can choose Go
1.7/stable and 1.7/edge. People who switch to a beta channel of 1.7 will get new beta revisions as long as that is open,
otherwise they will drop to 1.7/candidate, or 1.7/stable if that’s the only release in the 1.7 track.

The implicit track for everybody is ‘latest’. So what we currently call ‘stable’ is now implicitly ‘latest/stable’.
Installing a snap --stable is the same as installing --channel=latest/stable and the various tools will be updated to
reflect that nomenclature in upcoming releases.

On the ‘latest’ track, the major version will change when the publisher switches to the new major version. So if you are
on latest/stable for Go then you will get 1.7.x when the publisher chooses to release it into latest/stable, and then
1.8.x when that comes around. You are tracking the latest and greatest stable release.

If you switch to a track like 1.7, then the publisher should never change major version underneath you unexpectedly. You
can expect to get point releases that fit the ‘1.7’ designation, and you will stop getting updates when the publisher
stops releasing new revisions in that older track.

Since each track gets stable, candidate, beta and edge revisions, you can run daily builds of your stable branches into
the relevant track/edge channel. So something like 1.8/edge should contain a smoke-tested daily automated build of the
1.8.x stable branch. This maintains the ability to release CI builds to edge for each major version. Similarly, you have
beta and candidate to push releases to a wider audience before they go to the stable channel.

This feature is now available in beta. In addition to the Go snap there is an etcd snap available with tracks for 2.3
and 3.0, and tracks for the MySQL snap are in the works.

Please contact us on the #snappy IRC channel on FreeNode or snapcraft at lists.snapcraft.io or
https://rocket.ubuntu.com/channel/snapcraft if you'd like to create a track for your snap.

To ensure that users don’t get stuck on unmaintained software we will only open tracks for upstream stable releases that
are actively maintained in stable branches.

We are still making some adjustments to the snap and snapcraft command interactions to fully support tracks, but here's
the current CLI user experience to release a revision into a track:

    snapcraft release <snap> <revision> [<track>/]stability

For example:

snapcraft release foo 14 2.0/stable
snapcraft release foo 15 2.1/edge

The track is ‘latest’ unless provided explicitly. So this will update the release in latest/stable:

    snapcraft release foo 13 stable

To install a snap from a particular track:

    snap install foo --channel=2.1/candidate

`snap info` will in future tell you about the tracks for a particular snap. For now, tell your audience through your
blog or mailing lists if you have stable tracks to offer.

Hope you enjoy this feature. Feedback welcome and if you have questions, please ask!

Regards,

- Facundo, on behalf of the Snap Store team
.
Canonical - Online Services




More information about the Snapcraft mailing list