Roadmap & Releases

charmcraft 2.0

Released on 2022-08-01

  • Started to use the new Craft CLI, which brings to the project better verbosity levels and improved verbosity-related global options

  • Added programmatic outputs to several commands (related issue)

  • Several deprecations were enforced:

    • (DN03) The bases key in the configuration is now required (related issue)
    • (DN04) Removed the --entrypoint option from the pack command (use charm-entrypoint in the config) (related issue)
    • (DN05) Removed the --requirements option from the pack command (use charm-requirements in the config) (related issue)
    • (DN06) Removed the long time deprecated build command (use pack instead)
  • Now the --force option in the pack command is also used when packing inside an instance

  • Do not expose the logpath (from the instance) when running in managed mode (related issue)

  • Validate the entrypoint after build (not before, as it may be created during the build itself) (related issue)

  • Do not modify the charm’s project when packing using the reactive plugin (related issue)

charmcraft 1.7

Released on 2022-06-02

  • The 22.04 base is now supported (related issue).

  • Improved error messages for the JujuMetadata and other linters (related issue).

  • Better support for packing charms using Multipass provider in environments without snapd.

  • Enhanced the revisions and other commands’ outputs to show detailed timestamps (related issue).

  • The pack command now includes by default the actions directory, if present (related issue).

  • A keyring is not longer required in the system when using the --export option in the login command (related issue).

  • The entrypoint is now always validated to be correct, even if it’s the default src/charm.py (related issue).

  • Produced a specification for Charmcraft Programmatic Outputs.

  • Fixed the user interaction in the --shell option for the pack command (related issue).

charmcraft 1.6

Released on 2022-04-21

  • Several performance related improvements:

    • Reuse already installed dependencies from last run if requirements didn’t change

    • Faster launch of existing containers when packing charms

  • Improved user experience:

    • Show lifecycle step progress (related issue)

    • The deprecated ‘build’ command is now hidden and ‘pack’ appears more prominently in the help messages (related issue)

    • Better error messages in a couple of commands

    • Fixed interaction with user when asking if to install Multipass in Windows (related issue)

  • Enabled craftcl from Craft Parts scriptlets to be able to run the overridden step’s built-in handler (related issue)

  • Full logs from building container are always retrieved, even after a success pack (related issue)

  • Updated the ops framework version in the init template

  • Fixed a bug in libraries handling so disk paths are always importable (related issue)

  • Fixed which remote image was used by Multipass provider

  • Save the content of CHARMCRAFT_IMAGE_INFO environment variable into the Charm’s manifest

charmcraft 1.5

Released on 2022-03-17

  • Added the --name option in the upload command to override the name declared in the metadata

  • Improved logging with details of the system where it’s being run (operating system, version, desktop, etc) for better debugging

  • Fixed the Framework linter to use the name from metadata in reactive charms

  • Added instructions to install Charmcraft from PyPI.

  • Fixed the release command to allow resources with revision 0

  • Fixed the process execution inside the isolated container so logs can be properly obtained from it

  • Reworked how Craft Store errors are handled to expose failures correctly

  • Backward compatibility notices (check the Charmcraft deprecations documentation for more info):

    • Deprecated the build command, use pack instead (DN06)

    • Enforced DN01: do not support charmhub attributes with underscores anymore

    • Enforced DN02: the charmcraft.yaml is not longer optional for build command

  • Updated Craft Parts to version 1.2.0, relevant change:

    • performance improvement by not refreshing already installed snaps
  • Updated Craft Store to version 2.0.1, relevant changes:

    • raise an error when a keyring is not found to explicit that credentials could not be stored

    • do not allow overwriting existing credentials (to avoid the peril of leaving the system with wrong credentials stored)

    • fail properly when cannot parse correctly the credentials given through an environment variable

  • Fully adopted the Craft CLI library

Previous

Expand

charmcraft 1.4

Released on 2022-01-21

  • Several packing related improvements:

    • added two new properties to the default charm plugin: charm-python-packages to list Python packages to install from PyPI before installing requirements (these packages will be installed from sources and built locally at packing time) and charm-binary-python-packages very similar to the first one but allowing binary packages to be used

    • updated the craft-parts library to allow the packing of hook based charms (more information in the Pack a hook based charm with Charmcraft tutorial).

    • introduced a new reactive plugin to pack charms using the legacy charm tool (see the Pack a reactive based charm with Charmcraft tutorial for more information)

    • created two new linters to verify that mandatory actions.yaml and config.yaml files exist and have a proper YAML format

    • the building process now ignores the venv directory in the project sources

  • The store-related functionality is now provided by the craft-store library, which uses a new authentication backend that allowed several benefits:

    • there is a new --export option in the login command to save the obtained credentials to a file

    • the content of that file can be given to charmcraft through a new CHARMCRAFT_AUTH environment variable, which allows for easier integration with non-interactive environments (e.g. a CI/CD system)

    • added options to the login command to restrict the obtained credentials (shorter time to live, applies to specific charms, etc.)

    • the whoami command now shows the credentials restrictions

    Note that the new backend requires a working keyring in the system to be able to store the credentials in the login phase. If you’re seeing messages about no keyring being found in a desktop environment (not a container nor a remote machine), a low-effort solution is to install the lightweight gnome-keyring package.

    A combination of several of these new features can be found in the How to authenticate Charmcraft in remote environments tutorial.

  • The craft-cli library handles the exposure of messages to the user, improving the UX in general, and in particular:

    • added a new --trace global option that sets the Emitter level in TRACE, for debugging purposes

    • now a proper progress bar is used where uploading files is involved in different commands

  • The CHARMCRAFT_DEVELOPER environment variable is no longer mandatory to run charmcraft from alternative sources (i.e. not from the snap)

charmcraft 1.3

Released on 2021-09-28

  • Everything ready to produce Charmcraft installers for Windows and OS X.

  • Added the close command to close channels in Charmhub.

  • Several improvements for packing charms:

    • the Python dependencies are now built locally (binaries from PyPI are not used anymore).

    • added a cache mechanism for the building just mentioned, as it tends to be slow (the clean command can be used to force the next pack to build everything again).

    • introduced Multipass support.

    • added --debug, --shell, and --shell-after options to enable debugging of the process.

    • extended the list of default files to include the LICENSE, README.md and icon files (all optional).

  • The init command now creates the given directory if it does not exist (for that, also improved configuration management to support --project-dir pointing to a missing directory).

  • Improved the status command to correctly show tracks without releases.

  • (released in 1.3.1) Added a charm-python-packages plugin property so any Python package can be installed before the charm packing happens.

charmcraft 1.2

:white_check_mark: Charm Plugin for parts :white_check_mark: Bundle Plugin for parts :white_check_mark: Finalize craft-parts :white_check_mark: Analyze: attributes and linters (spec)

Schedule:

:white_check_mark: candidate 2021-08-03
:white_check_mark: stable 2021-08-19

charmcraft 1.1

:white_check_mark: Finalize bases parser :white_check_mark: Finalize OCI images Resources :white_check_mark: Finalize craft-providers integration

Schedule:

:white_check_mark: candidate 2021-07-05
:white_check_mark: stable 2021-07-15

charmcraft 1.0.0

:white_check_mark: Provide the building charms functionality through the pack command.

Schedule:

:white_medium_square: stable 2021-04-30

charmcraft 0.10.1

:white_check_mark: Enhanced charm template generated by ‘init’ to use the new sidecar-pattern

Schedule:

:white_medium_square: beta 2021-04-27

charmcraft 0.10.0

:white_check_mark: Support for oci-image resources. :white_check_mark: Improvements to the ‘init’ command, among others: links to docs, more robust base project, better docstrings and comments. :white_check_mark: Alert if README.md not included in a packed bundle (as it is required for deploying). :white_check_mark: Produce a manifest.yaml with the building context of the charm or bundle. :white_check_mark: Fix the handling of charms with dashes in the name when dealing with libraries.

Schedule:

:white_medium_square: beta 2021-04-20

charmcraft 0.9.0

:white_check_mark: Full support for Charm Bundles (register, upload, release, etc.); check the tutorial :white_check_mark: Full support for file type Resources (upload, attach them to a charm release, etc.); check the tutorial :white_check_mark: Point to external documentation in the docs left by init command

Schedule:

:white_medium_square: beta 2021-03-11

charmcraft 0.8.1

:white_check_mark: Renamed back to status the command to show channels and released revisions in Charmhub. :white_check_mark: Show to the user the returned error in case of rejected upload. :white_check_mark: Improved/updated the Bash Completion file according to current commands and their options.

Schedule:

:white_medium_square: beta 2021-02-18

charmcraft 0.8.0

:white_check_mark: Charmcraft works now with the PRODUCTION store by default (can be changed in the configuration). :white_check_mark: Configuration is now read from the charmcraft.yaml file, which is mandatory for bundles-related commands (optional for the rest by now, will be mandatory in the future for all commands). :white_check_mark: The User Agent sent to Charmhub is more complete and identifies better the Charmcraft client. :white_check_mark: Added all current commands and their options to the Bash completion file. :white_check_mark: Improvements in some help messages and init resulting files.

Schedule:

:white_medium_square: beta 2021-01-29

charmcraft 0.7.0

:white_check_mark: Added support for Charm Libraries, a mechanism to easily share and reuse charm interfaces and other components (tutorial) :white_check_mark: Initial support for charm bundles: the ‘pack’ command. :white_check_mark: Better project bootstrapping in ‘init’: can be used in a non-empty directory and adds coverage to the project tests.

Schedule:

:white_medium_square: beta 2021-01-12

charmcraft 0.6.1

:white_check_mark: Improved and polished texts, help and error messages, etc. :white_check_mark: Support to create a library, first step in the charm libraries lifecycle.

Schedule:

:white_medium_square: beta 2020-11-16

charmcraft 0.6.0 :white_check_mark: Improved the template for new charms: now they use the testing harness in the modern way. :white_check_mark: Refactored the commands infrastructure for improved process bootstrapping and UX consistency. :white_check_mark: Small UX improvements in messages and help texts.

Schedule:

:white_medium_square: beta 2020-11-02

charmcraft 0.5.0

:white_check_mark: Include the version file in the built charm (to be used by Charmhub). :white_check_mark: Now the revision is a mandatory parameter of the release command. :white_check_mark: Refactored help messages and indications. :white_check_mark: Better explanation in the README on how to run the project directly from Github.

Schedule:

:white_medium_square: beta 2020-09-28

charmcraft 0.4.0

:white_check_mark: Changed which files and directories are considered for a build: now everything is included in the charm, except what is explicitly marked as to ignore by Juju (which can be controlled through the .jujuignore file). :white_check_mark: Improved commands structure: each now has a long description and accepts the --verbose and --quiet global options :white_check_mark: Cope with conflicting command line arguments when using system pip3 from Ubuntu Bionic and earlier when building :white_check_mark: Several improvements to charmcraft init, including --series and an improved README.

Schedule:

:white_medium_square: beta 2020-08-27

charmcraft 0.3.1

:white_check_mark: Support API changes in Store responses (old and new versions of a couple of renamed fields).

Schedule:

:white_medium_square: beta 2020-08-06

charmcraft 0.3.0

:white_check_mark: New ‘init’ command to populate an empty directory with the scaffolding for a new charm. :white_check_mark: Basic but complete interaction with the Store, to authenticate, register and list names, and upload and release revisions (working with staging for now). :white_check_mark: Commands and their options are autocompleted now (hitting tab, as usual). :white_check_mark: Improvements when building charms: include the ‘template’ directory and support hooks that link the charm directly. :white_check_mark: Clearer tracking of project version.

Schedule:

:white_medium_square: beta 2020-07-30

charmcraft 0.2.0

:white_check_mark: Charmcraft is now packaged as a snap (try it with snap install --edge charmcraft). :white_check_mark: First interaction with the Store: now Charmcraft can authenticate against staging. :white_check_mark: All debug information (what you would see in the terminal with --verbose) is now always sent to a log file (which is indicated if an error happens, and left there for forensics). :white_check_mark: Improvements when the user interrupts the program (Ctrl-c) and in return codes in general. :white_check_mark: Better debugging information when building a charm.

Schedule:

:white_medium_square: beta 2020-06-25

charmcraft 0.1.3

:white_check_mark: The zip filename now comes from metadata.yaml rather than the directory name. :white_check_mark: A fix for #35, wherein we weren’t copying files into the charm.

Schedule:

:white_medium_square: beta 2020-06-16

charmcraft 0.1.2

:white_check_mark: Fixes an issue (#21) where we did the wrong thing for non-dispatch-aware jujus. :white_check_mark: This is also 0.1.1 which we couldn’t release into pip due to human error.

Schedule:

:white_medium_square: beta 2020-06-04

charmcraft 0.1.0

:white_check_mark: First release :white_check_mark: supported commands: build, and version.

Schedule:

:white_medium_square: beta 2020-05-29