Changelog¶
3.7.1 (2026-07-02)¶
Bug fixes:
Fix Pro methods not forwarding environment to LXD instances.
For a complete list of commits, check out the 3.7.1 release on GitHub.
3.7.0 (2026-06-29)¶
New features:
Add support for Ubuntu 26.10 (Stonking)
Bug fixes:
Don’t fail if the guest instance is an unknown Ubuntu release.
For a complete list of commits, check out the 3.7.0 release on GitHub.
3.6.0 (2026-04-30)¶
New features:
Add a
prunemethod to theProviderto remove instances related to a project.Ubuntu 26.04 (Resolute) images now use the Release remotes instead of the Daily ones.
Bug fixes:
Fix using the wrong instance name in
MultipassProvider.list_instances.
For a complete list of commits, check out the 3.6.0 release on GitHub.
3.5.0 (2026-03-12)¶
New features:
Add
CRAFT_PROVIDERS_DISABLE_EOL_SOURCES_CHECKsupport to skip EOL sources checks.get_host_snap_info()now returns aSnapInfomodel.
For a complete list of commits, check out the 3.5.0 release on GitHub.
3.4.0 (2026-02-25)¶
New features:
Add Ubuntu Pro support for LXD instances.
Add
edit_filecontext manager toExecutorfor editing files in instances.
For a complete list of commits, check out the 3.4.0 release on GitHub.
3.3.0 (2026-02-09)¶
Breaking changes:
Remove support for Ubuntu 24.10 (Oracular).
Bug fixes:
Do not fail if the build host is an unknown Ubuntu release.
Fix a bug where snapd would fail while waiting for snap refreshes to complete.
For a complete list of commits, check out the 3.3.0 release on GitHub.
3.2.0 (2025-11-13)¶
New features:
Mark Ubuntu 25.10 (Questing) as stable.
Add support for Ubuntu 26.04 (Resolute).
Bug fixes:
Do not check whether the “devel” base is end-of-life.
For a complete list of commits, check out the 3.2.0 release on GitHub.
3.1.0 (2025-09-08)¶
New features:
Updates are run on the first start of each instance.
Bug fixes:
Fix the permissions of the
/rootdirectory so that non-root users can access project directories.
For a complete list of commits, check out the 3.1.0 release on GitHub.
3.0.0 (2025-08-15)¶
New features:
Allow applications to prepare instances before the base image setup.
Breaking changes:
Removed support for Windows hosts
For a complete list of commits, check out the 3.0.0 release on GitHub.
2.4.0 (2025-07-11)¶
New features:
Add opt-in shutdown delay for a launched environment.
For a complete list of commits, check out the 2.4.0 release on GitHub.
2.3.1 (2025-06-19)¶
Bug fixes:
Warn, but don’t fail, on failures to mount a shared cache.
Fix issue where LXD failed to launch on non-Ubuntu distributions because all OS identities were interpreted as Ubuntu versions.
For a complete list of commits, check out the 2.3.1 release on GitHub.
2.3.0 (2025-05-09)¶
New features:
Add support for Ubuntu 25.04 (Plucky).
Add support for Ubuntu 25.10 (Questing).
Bug fixes:
Fix a race condition where multiple processes would fail to launch LXD instances at the same time.
For a complete list of commits, check out the 2.3.0 release on GitHub.
2.2.0 (2025-02-11)¶
New features:
hookutil.pynow available for dependent projects to clean up lxd instances.Dependent projects can now disable lxd
mknodinterception viaLXDProvider’s__init__.
Bug fixes:
Fix a bug where LXD instances would fail during setup, due to a race condition where the setup began before the instance had started.
For a complete list of commits, check out the 2.2.0 release on GitHub.
2.1.1 (2025-02-11)¶
Fix a bug where instances with underscores in their names would fail to launch.
For a complete list of commits, check out the 2.1.1 release on GitHub.
2.1.0 (2025-01-10)¶
Require Multipass>=1.14.1
Use Multipass-compatible instance names
For a complete list of commits, check out the 2.1.0 release on GitHub.
2.0.4 (2024-10-03)¶
requests-unixsocketdependency is replaced withrequests-unixsocket2
For a complete list of commits, check out the 2.0.4 release on GitHub.
2.0.3 (2024-10-02)¶
Fix a bug where signed aliased snaps couldn’t be injected into the build environment.
For a complete list of commits, check out the 2.0.3 release on GitHub.
1.20.4 (2024-09-27)¶
requests-unixsocketdependency is replaced withrequests-unixsocket2Fix a bug where signed aliased snaps couldn’t be injected into the build environment.
For a complete list of commits, check out the 1.20.4 release on GitHub.
2.0.2 (2024-09-26)¶
Improve multipass version parsing
For a complete list of commits, check out the 2.0.2 release on GitHub.
2.0.1 (2024-08-28)¶
Require Multipass>=1.14.1 when launching Ubuntu 24.04 (Noble) VMs, which adds support for the 24.04 buildd image
Note
2.0.1 includes changes from the 1.24.2 release.
For a complete list of commits, check out the 2.0.1 release on GitHub.
1.24.2 (2024-08-27)¶
Remove Ubuntu 23.10 (Mantic) support
Require Multipass>=1.14.1 when launching Ubuntu 24.04 (Noble) VMs, which adds support for the 24.04 buildd image
For a complete list of commits, check out the 1.24.2 release on GitHub.
2.0.0 (2024-08-09)¶
Breaking changes:
Set minimum Python version to 3.10
Migrate to Pydantic 2
Removal of deprecated features:
string type parameter for
lxd.remotes.get_remote_image()parameter
build_baseinprovider.Provider.launched_enviroment()parameter
use_snapshotsinlxd.launcher.launch()
configure_buildd_image_remote()inlxd.remotes
For a complete list of commits, check out the 2.0.0 release on GitHub.
1.25.0 (2024-07-24)¶
Use Ubuntu 24.04 buildd image for Multipass
Remove Ubuntu 23.10 (Mantic) support
For a complete list of commits, check out the 1.25.0 release on GitHub.
1.24.0 (2024-06-18)¶
Add support for Ubuntu 24.10 (Oracular)
For a complete list of commits, check out the 1.24.0 release on GitHub.
1.20.3 (2024-04-11)¶
Do not mount cache directories in LXD base instances.
Update base compatibility tag from
base-v4tobase-v8
For a complete list of commits, check out the 1.20.3 release on GitHub.
1.23.1 (2024-03-15)¶
Parse LXD versions with “LTS” suffix
For a complete list of commits, check out the 1.23.1 release on GitHub.
1.20.2 (2024-03-15)¶
Parse LXD versions with “LTS” suffix
For a complete list of commits, check out the 1.20.2 release on GitHub.
1.23.0 (2024-02-28)¶
Update base compatibility tag to
base-v7Use
buildddaily for Ubuntu 24.04 (Noble) and Ubuntu devel imagesEnsure apt installs non-interactively
For a complete list of commits, check out the 1.23.0 release on GitHub.
1.24.1 (2024-02-07)¶
Improve detection of installed LXD
Update the link to the network troubleshooting docs
For a complete list of commits, check out the 1.24.1 release on GitHub.
1.22.0 (2024-01-30)¶
Do not update apt sources for Ubuntu devel images
For a complete list of commits, check out the 1.22.0 release on GitHub.
1.21.0 (2024-01-17)¶
Update base compatibility tag to
base-v6Add Ubuntu 24.04 (Noble) support
Remove Ubuntu 23.04 (Lunar) support
For a complete list of commits, check out the 1.21.0 release on GitHub.
1.19.3 (2023-12-01)¶
Update base compatibility tag to
base-v5.Do not mount cache directories in LXD base instances.
For a complete list of commits, check out the 1.19.3 release on GitHub.
1.20.1 (2023-11-30)¶
Update base compatibility tag to
base-v4If an existing base instance is not setup, then it is auto-cleaned. If the process that created the not setup base instance is inactive, then
craft-providerswill immediately auto-clean the instance.
For a complete list of commits, check out the 1.20.1 release on GitHub.
1.20.0 (2023-11-10)¶
Snaps injected from the host will have their base snap injected into the instance.
For a complete list of commits, check out the 1.20.0 release on GitHub.
1.19.2 (2023-11-02)¶
Update base compatibility tag from
base-v2tobase-v3This fixes an issue where LXD instances created withcraft-providers==1.16.0may fail to start withcraft-providers>=1.17.0.
For a complete list of commits, check out the 1.19.2 release on GitHub.
1.19.1 (2023-10-26)¶
Require a disk device in the default LXD profile
For a complete list of commits, check out the 1.19.1 release on GitHub.
1.19.0 (2023-10-23)¶
Add Ubuntu 23.10 (Mantic) support
For a complete list of commits, check out the 1.19.0 release on GitHub.
1.18.0 (2023-09-28)¶
Check if base instance status before copying
Fail quickly when LXD errors do not involve instance creation
Add
checkparameter toexecute_run
For a complete list of commits, check out the 1.18.0 release on GitHub.
1.17.0 (2023-09-22)¶
Use a shared pip cache across instances
Remove Ubuntu 22.10 (Kinetic) support
Capture details for snap errors
For a complete list of commits, check out the 1.17.0 release on GitHub.
1.16.0 (2023-08-25)¶
Improve LXD instance creation process to avoid race conditions. The base instance is now created first and copied to an instance. Retry, timeout, and locking mechanisms prevent multiple processes from creating the same base instance.
Add LXD functions
check_instance_status(),config_set(),config_get(), andrestart()
For a complete list of commits, check out the 1.16.0 release on GitHub.
1.15.0 (2023-08-21)¶
Update base compatibility tag from
base-v1tobase-v2Use
snap refresh --holdinside instancesRe-level log messages
Add more info-level log messages
Update links from linuxcontainers.org to ubuntu.com
Set timezone of LXD instances to match host’s timezone
Add name and install recommendations to Providers
For a complete list of commits, check out the 1.15.0 release on GitHub.
1.14.1 (2023-07-24)¶
Prevent race when two processes try to create the same project at the same time
For a complete list of commits, check out the 1.14.1 release on GitHub.
1.10.1 (2023-06-29)¶
Set hostname when launching LXD instances
Update Lunar image for Multipass to stable image
Pin dependency urllib3<2
For a complete list of commits, check out the 1.10.1 release on GitHub.
1.14.0 (2023-06-28)¶
Update Lunar image for Multipass to stable image
Install common packages and clean up package cache on bases
Push files to any location in Multipass instances
CI, linting, and testing overhaul
Add Diataxis front page for documentation
Improve
push_file_iofor LXD instancesImprove
retry-until-timeoutlogicRefactor base classes
Improve operability with Python 3.12
For a complete list of commits, check out the 1.14.0 release on GitHub.
1.13.0 (2023-05-31)¶
Push files to any location in Multipass instances
Refactor base setup and warmup
Replace timeout for entire base setup with granular per-step timeouts
Add option to not install default packages during base setup
Install build-essentials and python3 in CentOS and AlmaLinux
Update PATH for CentOS
For a complete list of commits, check out the 1.13.0 release on GitHub.
1.12.0 (2023-05-18)¶
Add AlmaLinux 9 base
Add stricter typing for base names
Refactor CI workflow
Refactor Multipass
push_file_ioPin dependency urllib3<2
For a complete list of commits, check out the 1.12.0 release on GitHub.
1.11.0 (2023-04-19)¶
Move Snap pydantic model from
bases.builddtoactions.snap_installerRename
bases.builddmodule tobases.ubuntuDetermine base alias from base configuration in
provider.launched_environment()Add new functions
get_base_alias()andget_base_from_alias()Add CentOS 7 base
Add default for
launched_environment()parameterallow_unstable=FalseTrim suffixes from snap names when installing snaps.
For a complete list of commits, check out the 1.11.0 release on GitHub.
1.10.0 (2023-03-31)¶
Add support for kinetic, lunar, and devel images with Multipass
Remove unused import suppressions in init files
Update github actions
For a complete list of commits, check out the 1.10.0 release on GitHub.
1.9.0 (2023-03-20)¶
Set cloud.cfg to not reset apt’s source list for buildd bases
Store LXD instance’s full name in the config’s description
Add
allow_unstableparameter toProvider.launched_environment()
For a complete list of commits, check out the 1.9.0 release on GitHub.
1.8.1 (2023-03-10)¶
Add new base alias
BuilddBaseAlias.DEVELExpire unstable base instances every 14 days
Refactor tests such that all base aliases are tested by default
For a complete list of commits, check out the 1.8.1 release on GitHub.
1.8.0 (2023-03-01)¶
Track if instances are properly setup when launching. If the instance did not fully complete setup and auto-clean is enabled, the instance will be cleaned and recreated.
Add new field
setupto instance configuration to track set up statusUpdate base compatibility tag from
base-v0tobase-v1Add new BuilddBaseAliases for Lunar and Kinetic
Add support for interim Ubuntu releases for LXD
Add support for custom LXD image remotes. LXD remotes can now add any remote server to retrieve images from using the
RemoteImageclass.Add deprecation warning for LXD function
configure_buildd_image_remote(). Usage of this function should be replaced with RemoteImage’sadd_remote().Rename BuilddBase function
setup_instance_config()toupdate_compatibility_tag()Update brew for macOS CI tests
Update readthedocs link in readme
Capture subproccess error details when snap removal fails
Add default for
_run_lxc()parametercheck=TrueRefactor lxd unit and integration tests
Enable more pylint checks
Use new
use_base_instanceparameter when launching LXD instances from LXDProvider
For a complete list of commits, check out the 1.8.0 release on GitHub.
1.7.2 (2023-02-06)¶
Check LXD id map before starting an existing instance. If the id map does not match, the instance will be auto cleaned or an error will be raised.
Add
lxc.config_get()method to retrieve config values
For a complete list of commits, check out the 1.7.2 release on GitHub.
1.7.1 (2023-01-23)¶
Set LXD id maps after launching or copying an instance
Raise BaseConfigurationError for snap refresh failures
For a complete list of commits, check out the 1.7.1 release on GitHub.
1.7.0 (2023-01-11)¶
LXD instances launch from a cached base instance rather than a base image. This reduces disk usage and launch time.
For the LXD launch function
launched_environment, the parameteruse_snapshotshas been replaced byuse_base_instance.use_snapshotsstill works but logs a deprecation notice.Expire and recreate base instances older than 3 months (90 days)
Add
lxc.copy()method to copy instancesCheck for network connectivity after network-related commands fail
Add documentation for network connectivity issues inside instances
Enable testing for Ubuntu 22.04 images
Update
MultipassInstance.push_file_io()to work regardless of the host’s working directory
For a complete list of commits, check out the 1.7.0 release on GitHub.
1.6.2 (2022-12-08)¶
Disable automatic snap refreshes inside instances.
For a complete list of commits, check out the 1.6.2 release on GitHub.
1.6.1 (2022-10-31)¶
Store temporary files in the home directory
Fix typos
For a complete list of commits, check out the 1.6.1 release on GitHub.
1.6.0 (2022-10-06)¶
Add is_running method to base Executor class
Add new classes Provider, LXDProvider, and MultipassProvider
- Note: The new Provider classes are used to encapsulate LXD and Multipass,
from installing the provider to creating and managing instances. The code was leveraged from the craft applications (snapcraft, charmcraft, rockcraft, lpcraft), which implemented similar variations of these Provider classes. These classes are not stable and are likely to change. They will be stable and recommended for use in the release of craft-providers 2.0.
For a complete list of commits, check out the 1.6.0 release on GitHub.
1.5.1 (2022-09-29)¶
When injecting a snap, assert the snap’s publisher’s account
Avoid race condition when multiple processes add a LXD remote at the same time
For a complete list of commits, check out the 1.5.1 release on GitHub.
1.5.0 (2022-09-23)¶
Add mount method to Executor base class
LXDInstance’s mount method signature has changed - The optional parameter
device_namehas been deprecated. It now matches MultipassInstance’s signature ofmount(host_source, target)Signed snaps injected into a provider are asserted
Existing .snap files are not removed before overwriting with a new .snap file
For a complete list of commits, check out the 1.5.0 release on GitHub.
1.4.2 (2022-09-09)¶
Set snapd http-proxy and https-proxy
Pass on snapd no-CDN configuration
For a complete list of commits, check out the 1.4.2 release on GitHub.
1.4.1 (2022-08-30)¶
Fix bug in BuilddBase where hostnames longer than 64 characters may not having trailing hyphens removed.
Allow overriding of compatibility tag in Bases
For a complete list of commits, check out the 1.4.1 release on GitHub.
1.4.0 (2022-08-22)¶
Use LXD-compatible instance names
Add optional list of snaps to install in bases
Add optional list of system packages to install in bases
Add new temporarily_pull_file function to Executor base class
Add exists and delete function to Executor base class
Declare more instance paths as PurePath
Ensure BuilddBase hostname is valid
Move .pylintrc to pyproject.toml
Enforce line-too-long
Fix for unit tests on non-linux platforms
- Note: The provided name for a LXD executor object is converted to comply with
LXD naming conventions for instances. This may cause a compatibility issue for applications that assume the LXD instance name will be identical to the Executor name.
If a provided name already complies with LXD naming conventions, it is not modified.
For a complete list of commits, check out the 1.4.0 release on GitHub.
1.3.1 (2022-06-09)¶
Add stdin parameter for LXC commands (default: null)
For a complete list of commits, check out the 1.3.1 release on GitHub.
1.3.0 (2022-05-21)¶
Refactor snap injection logic
Always check multipass command execution results
Update tests and documentation
For a complete list of commits, check out the 1.3.0 release on GitHub.
1.2.0 (2022-04-07)¶
Refactor instance configuration
Disable automatic apt actions in instance setup
Warm-start existing instances instead of rerunning full setup
Don’t reinstall snaps already installed on target
For a complete list of commits, check out the 1.2.0 release on GitHub.
1.1.1 (2022-03-30)¶
Fix LXD user permission verification
For a complete list of commits, check out the 1.1.1 release on GitHub.
1.1.0 (2022-03-16)¶
Add buildd base alias for Jammy
For a complete list of commits, check out the 1.1.0 release on GitHub.
1.0.5 (2022-03-09)¶
Fix uid mapping in lxd host mounts
For a complete list of commits, check out the 1.0.5 release on GitHub.
1.0.4 (2022-03-02)¶
Export public API names
Declare instance paths as PurePath
Address linter issues
Update documentation
For a complete list of commits, check out the 1.0.4 release on GitHub.