Charm 2.0 makes it even easier to publish charms
by Marco Ceppi on 16 April 2016
Discover the newly improved charm package and command features that offer a simpler publishing workflow, as well as many changes to charm-tools.
TL;DR
There is a new package (and command) called charm that compliments the previous charm-tools package and provides a new way forward for managing charms and bundles in the charm store! This can be used regardless of Juju version (so not dependent on 1.25 or 2.0) and will be the recommended way of interacting, publishing, and managing charms in the store going forward.
Installing
There are several means for installation, it is recommended to go through your distributions means instead of installing directly from upstream.
Please also check the caveats section if you’ve been using the charm command thus far.
Ubuntu
For everyone not on Xenial, first add ppa:juju/stable
with sudo add-apt-repository ppa:juju/stable
then:
sudo apt update
sudo apt install charm charm-tools
Homebrew
brew install charm charm-tools
Currently waiting for Homebrew/homebrew-core#350 to land
PIP & GO
The new charm command is a golang package, so it’ll need to be installed separately from pip
GO
go get launchpad.net/godeps/...
go get -v github.com/juju/charmstore-client/...
git --git-dir=$GOPATH/src/github.com/juju/charmstore-client/.git
--work-tree=$GOPATH/src/github.com/juju/charmstore-client checkout 2.1.1
godeps -u $GOPATH/src/github.com/juju/charmstore-client/dependencies.tsv
go get -v github.com/juju/charmstore-client/...
PIP
pip install -U charm-tools==2.1.2
Highlights
Here are a few key highlights from the release
BRAND NEW CHARM COMMAND!
The UI Engineering team and juju-core teams have done a FANTASTIC job on really iterating on user and author feedback to make the charm publishing workflow to the store dead simple and very powerful. This new charm command introduces several new features:
charm push
: easily add charms to the charm storecharm publish
: manage development and stable versions of charmscharm grant/revoke
: share charms with other people – or the publiccharm pull
: download charms from the store for offline deploymentscharm list
: show a list of charms either you, or another user has
This is just a subset of the new commands available. All the new charm commands have been documented and are available at https://jujucharms.com/docs/devel/tools-charm-tools#usage
Channels and ACLs
Charms now can be pushed to the store and both published to channels or assigned ACLs. All of this has been documented in length at https://jujucharms.com/docs/devel/authors-charm-store
charm-tools are 2.0 ready
This includes updating proof for new fields (payloads, storage, series, min-juju-version, etc).
powershell charm template
You can now run charm create -t powershell
to get the latest powershell charm template
charm pull-source
With the creation of a charm pull command, the removal of explicit VCS in the store, and the rise of layers we found it pertinent to add a pull-source command. This command will pull the layer used to build the charm, the charm itself, and understands both interface
and layer
prefixes to pull sources from the the Charm Layer index.
Changes
Outline of the changes that went into each release
charm
This is the first public release of the charmstore-client, as such no changes to report. Lots of new features though.
charm-tools
A LOT of changes happened between v1.11.1 and v2.1.2 (too many to enumerate in email). The full list can be found at the charm-tools repo.
charm-tools itself saw nearly 2,000 additions and 1500 deletions. Lots of cleaning up of code, user experience improvements, as well as updating to make sure charm 2.0 is a fantastic experience.
Caveats
This transition was a long time coming! As such its not without a few hitches.
I’ve already installed the charm command
Many of you may have installed early preview releases of the new charm command. The packaging for such was evolving quickly. There were two sources and two versions of the charm package that existed prior to today’s release. In order to figure out if you are affected by this please run:
dpkg-query -W charm
If you have charm installed you’ll likely see the following
charm VERSION
If your VERSION starts with the number 4, congratulations! You were a super early adopter, but have a very outdated package. Please first remove ppa:yellow/ppa
from your machine: sudo add-apt-repository -r ppa:yellow/ppa
, then remove the offending package: sudo apt purge charm
, finally follow install instructions above.
If your version starts with 2:2 then you too were an early adopter but have an epoch package that will no longer be updated. Simply apt purge charm
then follow the install instructions above.
If your version starts with 2.1 then you’re good to go! Thank you for installing the charm command.
Finally, if your version wasn’t represented above you’re very special, please email me with the precise version you have for removal instructions.
charm-tools won’t install because python-path.py
This is any issue for anyone who installed from the juju stable ppa. Make sure the stable ppa is added, sudo add-apt-repository ppa:juju/stable
, issue a sudo apt update
, then perform a sudo apt dist-upgrade
. python-path.py has been replaced by python-path from Xenial and is a far superior package.
charm-tools 2.2
We’re already hard at work on the next version of charm-tools, due out in October. You can follow along the progress:
Support
Finally, if you have any questions, please feel free to email them to this list, juju@lists.ubuntu.com – report issues against either https://github.com/juju/charm-tools or https://github.com/juju/charmstore-client ask questions in #juju on freenode.net or on https://askubuntu.com