Changelog¶
See the Releases page on GitHub for a complete list of commits that are included in each version.
X.Y.Z (2024-MMM-DD)¶
Require Multipass>=1.14.1
2.0.4 (2024-Oct-03)¶
requests-unixsocket
dependency is replaced withrequests-unixsocket2
2.0.3 (2024-Oct-02)¶
Fix a bug where signed aliased snaps couldn’t be injected into the build environment.
1.20.4 (2024-Sep-27)¶
requests-unixsocket
dependency is replaced withrequests-unixsocket2
Fix a bug where signed aliased snaps couldn’t be injected into the build environment.
2.0.2 (2024-Sep-26)¶
Improve multipass version parsing
2.0.1 (2024-Aug-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.
1.24.2 (2024-Aug-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
2.0.0 (2024-Aug-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_base
inprovider.Provider.launched_enviroment()
parameter
use_snapshots
inlxd.launcher.launch()
configure_buildd_image_remote()
inlxd.remotes
1.25.0 (2024-Jul-24)¶
Use Ubuntu 24.04 buildd image for Multipass
Remove Ubuntu 23.10 (Mantic) support
1.24.0 (2024-Jun-18)¶
Add support for Ubuntu 24.10 (Oracular)
1.20.3 (2024-Apr-11)¶
Do not mount cache directories in LXD base instances.
Update base compatibility tag from
base-v4
tobase-v8
1.23.1 (2024-Mar-15)¶
Parse LXD versions with “LTS” suffix
1.20.2 (2024-Mar-15)¶
Parse LXD versions with “LTS” suffix
1.23.0 (2024-Feb-28)¶
Update base compatibility tag to
base-v7
Use
buildd
daily for Ubuntu 24.04 (Noble) and Ubuntu devel imagesEnsure apt installs non-interactively
1.24.1 (2024-Feb-07)¶
Improve detection of installed LXD
Update the link to the network troubleshooting docs
1.22.0 (2024-Jan-30)¶
Do not update apt sources for Ubuntu devel images
1.21.0 (2024-Jan-17)¶
Update base compatibility tag to
base-v6
Add Ubuntu 24.04 (Noble) support
Remove Ubuntu 23.04 (Lunar) support
1.19.3 (2023-Dec-01)¶
Update base compatibility tag to
base-v5
.Do not mount cache directories in LXD base instances.
1.20.1 (2023-Nov-30)¶
Update base compatibility tag to
base-v4
If 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-providers
will immediately auto-clean the instance.
1.20.0 (2023-Nov-10)¶
Snaps injected from the host will have their base snap injected into the instance.
1.19.2 (2023-Nov-02)¶
Update base compatibility tag from
base-v2
tobase-v3
This fixes an issue where LXD instances created withcraft-providers==1.16.0
may fail to start withcraft-providers>=1.17.0
.
1.19.1 (2023-Oct-26)¶
Require a disk device in the default LXD profile
1.19.0 (2023-Oct-23)¶
Add Ubuntu 23.10 (Mantic) support
1.18.0 (2023-Sep-28)¶
Check if base instance status before copying
Fail quickly when LXD errors do not involve instance creation
Add
check
parameter toexecute_run
1.17.0 (2023-Sep-22)¶
Use a shared pip cache across instances
Remove Ubuntu 22.10 (Kinetic) support
Capture details for snap errors
1.16.0 (2023-Aug-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()
1.15.0 (2023-Aug-21)¶
Update base compatibility tag from
base-v1
tobase-v2
Use
snap refresh --hold
inside 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
1.14.1 (2023-Jul-24)¶
Prevent race when two processes try to create the same project at the same time
1.10.1 (2023-Jun-29)¶
Set hostname when launching LXD instances
Update Lunar image for Multipass to stable image
Pin dependency urllib3<2
1.14.0 (2023-Jun-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_io
for LXD instancesImprove
retry-until-timeout
logicRefactor base classes
Improve operability with Python 3.12
1.13.0 (2023-May-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
1.12.0 (2023-May-18)¶
Add AlmaLinux 9 base
Add stricter typing for base names
Refactor CI workflow
Refactor Multipass
push_file_io
Pin dependency urllib3<2
1.11.0 (2023-Apr-19)¶
Move Snap pydantic model from
bases.buildd
toactions.snap_installer
Rename
bases.buildd
module tobases.ubuntu
Determine 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=False
Trim suffixes from snap names when installing snaps.
1.10.0 (2023-Mar-31)¶
Add support for kinetic, lunar, and devel images with Multipass
Remove unused import suppressions in init files
Update github actions
1.9.0 (2023-Mar-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_unstable
parameter toProvider.launched_environment()
1.8.1 (2023-Mar-10)¶
Add new base alias
BuilddBaseAlias.DEVEL
Expire unstable base instances every 14 days
Refactor tests such that all base aliases are tested by default
1.8.0 (2023-Mar-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
setup
to instance configuration to track set up statusUpdate base compatibility tag from
base-v0
tobase-v1
Add 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
RemoteImage
class.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=True
Refactor lxd unit and integration tests
Enable more pylint checks
Use new
use_base_instance
parameter when launching LXD instances from LXDProvider
1.7.2 (2023-Feb-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
1.7.1 (2023-Jan-23)¶
Set LXD id maps after launching or copying an instance
Raise BaseConfigurationError for snap refresh failures
1.7.0 (2023-Jan-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_snapshots
has been replaced byuse_base_instance
.use_snapshots
still 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
1.6.2 (2022-Dec-08)¶
Disable automatic snap refreshes inside instances.
1.6.1 (2022-Oct-31)¶
Store temporary files in the home directory
Fix typos
1.6.0 (2022-Oct-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.
1.5.1 (2022-Sep-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
1.5.0 (2022-Sep-23)¶
Add mount method to Executor base class
LXDInstance’s mount method signature has changed - The optional parameter
device_name
has 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
1.4.2 (2022-Sep-09)¶
Set snapd http-proxy and https-proxy
Pass on snapd no-CDN configuration
1.4.1 (2022-Aug-30)¶
Fix bug in BuilddBase where hostnames longer than 64 characters may not having trailing hyphens removed.
Allow overriding of compatibility tag in Bases
1.4.0 (2022-Aug-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.
1.3.1 (2022-Jun-09)¶
Add stdin parameter for LXC commands (default: null)
1.3.0 (2022-May-21)¶
Refactor snap injection logic
Always check multipass command execution results
Update tests and documentation
1.2.0 (2022-Apr-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
1.1.1 (2022-Mar-30)¶
Fix LXD user permission verification
1.1.0 (2022-Mar-16)¶
Add buildd base alias for Jammy
1.0.5 (2022-Mar-09)¶
Fix uid mapping in lxd host mounts
1.0.4 (2022-Mar-02)¶
Export public API names
Declare instance paths as PurePath
Address linter issues
Update documentation