Releases: canonical/charmcraft
Release 2.2.0
-
Support including collaborations when listing registered names (related issue)
-
Stopped showing repeated branches in Status command results (related issue)
-
Better messages to the user in several situations:
- when pushing a charm library and the lib's patch number is too high
- on a login attempt when already having credentials (related issue)
- improved the help for
--format
option in several commands (related issue)
-
Show (with value hidden) the authentication environment variable in system details in logs (related issue)
-
Support correctly local OCI images with empty
RepoDigests
key -
Lot of internal improvements: integration tests, code restructuring and simplification, and project cleanup in general.
Release 2.1.0
-
Created the profile option for the
init
command; templates provided so far:simple
: (the default if--profile
not used) a basic kubernetes charm with lot of texts helping the developer to navigate their first charm, including unit and integration tests andtox
configuration (related issue)kubernetes
: also a k8s charm but more sintetic, aimed for more experienced developersmachine
: also a sintetic base charm but meant to be deployed in machine-based environments (related issues this and this)
-
Use incremental delays (with very small first ones) during the polling of upload status (related issue)
-
Instrumented the
pack
command so timings can be easily captured (related issue)- provided a
--measure
option to dump measurements to a file - and a tool to visualize those measurements (related issue)
- provided a
-
Several
reactive
plugin improvements:- Fix charm tools version validation (related issue)
- Support arguments to charm build command (related issue)
- Properly check returncode from charm tool (related issue)
-
Support both image id and digest when uploading oci-image resources. (related issue)
-
Isolated charm_builder.py as a generic plugin script (related issue)
-
Better charm's entry point validation (it's a linter now, so it can be ignored or run explicitly)
-
Several internal help messages and web documentation improvements.
Release 2.0.0
-
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)
Release 1.7.1
- Validate that the charm's entry point exists and is executable after the lifecycle process (as it may be generated during that process)
Release 1.7.0
-
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). -
Other minor fixes/improvements:
-
Save temp retrieved file in current directory so it's fine for the case of running inside a strict snap.
-
Pass the project's dir owner id when creating the lxd instance.
-
Re-use the file descriptor already opened by the tempfile to not leak it.
-
Release 1.6.0
-
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
Release 1.5.0
-
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
Release 1.4.0
-
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
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)
Release 1.3.1
- Added a
charm-python-packages
plugin property so any Python package can be installed before the charm packing happens.
Release 1.2.1
-
Fixed a bug where previously packed and now deleted files were being included anyway in the final charm file (please do
charmcraft clean
to clean up possible leftovers from previous version). -
Include more files by default in the charm (if present, as they are optional):
icon.svg
,README.md
andLICENSE
.