Skip to content

Releases: canonical/charmcraft

Release 2.2.0

16 Dec 18:06
2.2.0
75a30fd
Compare
Choose a tag to compare
  • 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

29 Sep 18:34
2.1.0
b22fcdb
Compare
Choose a tag to compare
  • 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 and tox configuration (related issue)
    • kubernetes: also a k8s charm but more sintetic, aimed for more experienced developers
    • machine: 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)
  • Several reactive plugin improvements:

  • 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

12 Jul 13:50
2.0.0
5043740
Compare
Choose a tag to compare
  • 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)

Release 1.7.1

08 Jun 11:06
1.7.1
c7352bf
Compare
Choose a tag to compare
  • 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

24 May 14:35
1.7.0
04c91c1
Compare
Choose a tag to compare
  • 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).

  • 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

12 Apr 15:01
1.6.0
b1adccd
Compare
Choose a tag to compare
  • 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

Release 1.5.0

04 Mar 13:50
1.5.0
caa9804
Compare
Choose a tag to compare
  • 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

Release 1.4.0

11 Jan 11:00
1.4.0
f88226e
Compare
Choose a tag to compare
  • 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

    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)

Release 1.3.1

28 Sep 16:27
1.3.1
b7fa8a3
Compare
Choose a tag to compare
  • Added a charm-python-packages plugin property so any Python package can be installed before the charm packing happens.

Release 1.2.1

13 Aug 11:19
1.2.1
673b324
Compare
Choose a tag to compare
  • 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 and LICENSE.