How to build and own a charm or a bundle

When you build and own a charm, you wear multiple hats – developer, QA specialist, technical author, marketing specialist. This document walks you through these roles.

Although the rough steps associated with these roles are presented sequentially, reflecting the logic “you need to develop something before test, document, and publish”, we strongly recommend you iterate – develop something, test right away, document right away, market right away, repeat.

Set things up

See more:

Develop

For a charm, consider resources, application lifecycle management, actions, configurations, relations (integrations), secrets.

See more:

For a bundle, iterate on the bundle.yaml file to optimise.

Test and debug

For a charm, consider unit, scenario, integration, and end-to-end tests.

See more:

Document

You should always document each feature of your charm as you develop (e.g., as you define an action in charmcraft.yaml, make sure to provide a useful description). However, at the end, also take stock of your charm overall and add any other materials that you think might be needed.

See more: How to add docs to a charm on Charmhub

Market

Add an icon

See more: How to add an icon

Register a name in Charmhub

See more: How to publish> Register

Create a channel track

See more:

Publish on Charmhub

See more:

Promote to a more stable channel risk level

To promote a charm to a more stable channel risk level of the same track, release it again specifying the revision number and the channel, including track and, especially, the target risk level. For example:

charmcraft release --revision 118 --channel=5/candidate

To promote a bundle to a more stable risk level of the same track, run charmcraft promote-bundle.

Request review and public listing

See more: Requirements for public listing

Advertise

Write a Discourse post to announce your release.

Schedule a community workshop to demo your charm’s capabilities.

Chat about it with your charmer friends.


Contributors: @lengau, @jdkandersson, @mmkay, @tmihoc, @weii-wang