Channel

See also: juju deploy --channel

In Charmcraft, a channel is a way to use a charm in a particular stage of development.

The notion of ‘channel’ in charms is entirely parallel to the notion of ‘channel’ in snaps / the *craft world more generally.

See more: Snapcraft | Channels

Contents:

Components

A charm channel consists of three pieces, in this order: <track>/<risk>/<branch>.

Track

See also: How to create a track for your charm

The <track> is a way to collect multiple supported releases of your charm under the same name.

When deploying a charm, specifying a track is optional; if you don’t specify any, the default option is the latest.

To ensure consistency between tracks of the same charm, tracks must comply with a guardrail.

Track guardrail

See also: How to request a track guardrail

A track guardrail is a regex generated by a Charmhub admin at the request of a charm author whose purpose is to ensure that any new track of the charm complies with the specific pattern selected by the charm author for the charm, usually in conformity with the pattern established by the upstream workload (e.g., no numbers, cf, e.g., OpenStack; numbers in the major.minor format; just integers; etc.)

Risk

The <risk> refers to one of the following risk levels:

  • stable: (default) This is the latest, tested, working stable version of the charm.
  • candidate: A release candidate. There is high confidence this will work fine, but there may be minor bugs.
  • beta: A beta testing milestone release.
  • edge: The very latest version - expect bugs!

Branch

Finally, the <branch> is an optional finer subdivision of a channel for a published charm that allows for the creation of short-lived sequences of charms (guaranteed for only 30 days without modification) that can be pushed on demand by charm developers to help with fixes or temporary experimentation. Note that, if you use --channel to specify a branch, you must specify a track and a risk level as well.