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 thepack
command (usecharm-entrypoint
in the config) (related issue) - (DN05) Removed the
--requirements
option from thepack
command (usecharm-requirements
in the config) (related issue) - (DN06) Removed the long time deprecated
build
command (usepack
instead)
- (DN03) The
-
Now the
--force
option in thepack
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 theactions
directory, if present (related issue). -
A keyring is not longer required in the system when using the
--export
option in thelogin
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 thepack
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 theinit
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 theupload
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 revision0
-
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, usepack
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) andcharm-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 legacycharm
tool (see the Pack a reactive based charm with Charmcraft tutorial for more information) -
created two new linters to verify that mandatory
actions.yaml
andconfig.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 thelogin
command to save the obtained credentials to a file -
the content of that file can be given to
charmcraft
through a newCHARMCRAFT_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 lightweightgnome-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 runcharmcraft
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 nextpack
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
Charm Plugin for parts Bundle Plugin for parts Finalize craft-parts Analyze: attributes and linters (spec)
Schedule:
candidate | 2021-08-03 | |
stable | 2021-08-19 |
charmcraft 1.1
Finalize bases parser Finalize OCI images Resources Finalize craft-providers integration
Schedule:
candidate | 2021-07-05 | |
stable | 2021-07-15 |
charmcraft 1.0.0
Provide the building charms functionality through the pack command.
Schedule:
stable | 2021-04-30 |
charmcraft 0.10.1
Enhanced charm template generated by ‘init’ to use the new sidecar-pattern
Schedule:
beta | 2021-04-27 |
charmcraft 0.10.0
Support for oci-image resources. Improvements to the ‘init’ command, among others: links to docs, more robust base project, better docstrings and comments. Alert if README.md not included in a packed bundle (as it is required for deploying). Produce a manifest.yaml with the building context of the charm or bundle. Fix the handling of charms with dashes in the name when dealing with libraries.
Schedule:
beta | 2021-04-20 |
charmcraft 0.9.0
Full support for Charm Bundles (register, upload, release, etc.); check the tutorial Full support for file type Resources (upload, attach them to a charm release, etc.); check the tutorial Point to external documentation in the docs left by init command
Schedule:
beta | 2021-03-11 |
charmcraft 0.8.1
Renamed back to status the command to show channels and released revisions in Charmhub. Show to the user the returned error in case of rejected upload. Improved/updated the Bash Completion file according to current commands and their options.
Schedule:
beta | 2021-02-18 |
charmcraft 0.8.0
Charmcraft works now with the PRODUCTION store by default (can be changed in the configuration). 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). The User Agent sent to Charmhub is more complete and identifies better the Charmcraft client. Added all current commands and their options to the Bash completion file. Improvements in some help messages and init resulting files.
Schedule:
beta | 2021-01-29 |
charmcraft 0.7.0
Added support for Charm Libraries, a mechanism to easily share and reuse charm interfaces and other components (tutorial) Initial support for charm bundles: the ‘pack’ command. Better project bootstrapping in ‘init’: can be used in a non-empty directory and adds coverage to the project tests.
Schedule:
beta | 2021-01-12 |
charmcraft 0.6.1
Improved and polished texts, help and error messages, etc. Support to create a library, first step in the charm libraries lifecycle.
Schedule:
beta | 2020-11-16 |
charmcraft 0.6.0 Improved the template for new charms: now they use the testing harness in the modern way. Refactored the commands infrastructure for improved process bootstrapping and UX consistency. Small UX improvements in messages and help texts.
Schedule:
beta | 2020-11-02 |
charmcraft 0.5.0
Include the version file in the built charm (to be used by Charmhub). Now the revision is a mandatory parameter of the release command. Refactored help messages and indications. Better explanation in the README on how to run the project directly from Github.
Schedule:
beta | 2020-09-28 |
charmcraft 0.4.0
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). Improved commands structure: each now has a long description and accepts the --verbose and --quiet global options Cope with conflicting command line arguments when using system pip3 from Ubuntu Bionic and earlier when building Several improvements to charmcraft init, including --series and an improved README.
Schedule:
beta | 2020-08-27 |
charmcraft 0.3.1
Support API changes in Store responses (old and new versions of a couple of renamed fields).
Schedule:
beta | 2020-08-06 |
charmcraft 0.3.0
New ‘init’ command to populate an empty directory with the scaffolding for a new charm. Basic but complete interaction with the Store, to authenticate, register and list names, and upload and release revisions (working with staging for now). Commands and their options are autocompleted now (hitting tab, as usual). Improvements when building charms: include the ‘template’ directory and support hooks that link the charm directly. Clearer tracking of project version.
Schedule:
beta | 2020-07-30 |
charmcraft 0.2.0
Charmcraft is now packaged as a snap (try it with snap install --edge charmcraft). First interaction with the Store: now Charmcraft can authenticate against staging. 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). Improvements when the user interrupts the program (Ctrl-c) and in return codes in general. Better debugging information when building a charm.
Schedule:
beta | 2020-06-25 |
charmcraft 0.1.3
The zip filename now comes from metadata.yaml rather than the directory name. A fix for #35, wherein we weren’t copying files into the charm.
Schedule:
beta | 2020-06-16 |
charmcraft 0.1.2
Fixes an issue (#21) where we did the wrong thing for non-dispatch-aware jujus. This is also 0.1.1 which we couldn’t release into pip due to human error.
Schedule:
beta | 2020-06-04 |
charmcraft 0.1.0
First release supported commands: build, and version.
Schedule:
beta | 2020-05-29 |