Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
5b05ac9
ci: add support for Python 3.14 and remove Python 3.13
lengau Mar 20, 2026
7a40c72
ci: enable multipass tests
lengau Mar 20, 2026
5826511
boop
lengau Mar 20, 2026
90abf94
ci: configure KVM for multipass on Linux and add Python 3.14 to tests
lengau Mar 20, 2026
3d80774
ci: comment out non-multipass jobs in qa.yaml
lengau Mar 20, 2026
6a64573
add some self-hosted runners
lengau Mar 20, 2026
8e64f09
no s390x or ppc
lengau Mar 20, 2026
106a16d
ci: temporarily run only test_launch to speed up investigation
lengau Mar 20, 2026
2d51777
ci: also override test-coverage to run only test_launch
lengau Mar 20, 2026
6fd1c42
ci: fix multipass socket access denied
lengau Mar 20, 2026
36c090f
ci: re-enable lint and add direct multipass test job
lengau Mar 20, 2026
7151c61
ci: re-enable all tests
lengau Mar 20, 2026
71365ba
ci: free up disk space on macOS and Linux runners
lengau Mar 20, 2026
ebf70de
ci: add comment to free-disk-space target
lengau Mar 20, 2026
9f83fee
ci: only run macos-smoketest and test-multipass
lengau Mar 20, 2026
2af8b44
ci: optimize brew cleanup on macOS runners
lengau Mar 20, 2026
5e849f8
ci: enable multipass slow tests on Intel macOS
lengau Mar 20, 2026
3b6c9f8
ci: use macos-14-large for multipass tests and set qemu driver
lengau Mar 20, 2026
391b28a
ci: fix matrix evaluation errors and keep minimal test set
lengau Mar 20, 2026
1c9b39d
ci: remove fast tests from multipass and macos smoke tests
lengau Mar 20, 2026
d3aebf8
ci: reduce multipass config on Linux
lengau Mar 20, 2026
73b6c17
ci: fix matrix evaluation errors by providing valid platforms
lengau Mar 20, 2026
593c890
ci: ensure multipass is ready on macOS and make cleanup robust
lengau Mar 20, 2026
70c4be0
ci: restore qa.yaml with corrected matrix configs
lengau Mar 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 21 additions & 18 deletions .github/workflows/qa.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ jobs:
with:
# Fast tests run on several Ubuntu platforms and macos on ARM
fast-test-platforms: '["ubuntu-24.04", "ubuntu-24.04-arm", "macos-15-intel"]'
fast-test-python-versions: '["3.10", "3.12", "3.13"]'
fast-test-python-versions: '["3.12", "3.14"]'
# Slow tests (which include everything that needs multipass) run on several Ubuntu platforms
slow-test-platforms: '["ubuntu-24.04", "ubuntu-24.04-arm"]'
slow-test-python-versions: '["3.12"]'
slow-test-python-versions: '["3.12", "3.14"]'
lowest-python-platform: "ubuntu-22.04"
lowest-python-version: "3.10"
use-lxd: true
Expand All @@ -33,29 +33,32 @@ jobs:
uses: canonical/starflow/.github/workflows/test-python.yaml@main
with:
# All fast tests run in the basic job
fast-test-platforms: "[]"
fast-test-platforms: []
fast-test-python-versions: []
slow-test-platforms: '["ubuntu-24.04", "ubuntu-24.04-arm"]'
slow-test-python-versions: '["3.12"]'
lowest-python-platform: ""
slow-test-python-versions: '["3.12", "3.14"]'
lowest-python-platform: "ubuntu-24.04"
use-lxd: true
pytest-markers: lxd_instance
# test-multipass:
# uses: canonical/starflow/.github/workflows/test-python.yaml@main
# with:
# # All fast tests run in the basic job
# fast-test-platforms: "[]"
# slow-test-platforms: '["ubuntu-24.04"]'
# slow-test-python-versions: '["3.12"]'
# lowest-python-platform: ""
# use-lxd: true
# pytest-markers: multipass_instance
test-multipass:
uses: canonical/starflow/.github/workflows/test-python.yaml@main
with:
# All fast tests run in the basic job
fast-test-platforms: []
fast-test-python-versions: []
slow-test-platforms: '["ubuntu-24.04", "macos-14-large"]'
slow-test-python-versions: '["3.12", "3.14"]'
lowest-python-platform: "ubuntu-24.04"
use-lxd: true
pytest-markers: multipass_instance
macos-smoketest:
uses: canonical/starflow/.github/workflows/test-python.yaml@main
with:
# All fast tests run in the basic job
fast-test-platforms: "[]"
fast-test-platforms: []
fast-test-python-versions: []
slow-test-platforms: '["macos-14-large"]'
slow-test-python-versions: '["3.12"]'
lowest-python-platform: ""
slow-test-python-versions: '["3.12", "3.14"]'
lowest-python-platform: "macos-14-large"
use-lxd: false
pytest-markers: smoketest
4 changes: 2 additions & 2 deletions .github/workflows/tests-weekly.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python: ["3.13"]
python: ["3.14"]
os: [macos-14-large]
runs-on: ${{ matrix.os }}
timeout-minutes: 120
Expand Down Expand Up @@ -54,7 +54,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python: ["3.13"]
python: ["3.14"]
os: [macos-14-large]
runs-on: ${{ matrix.os }}
steps:
Expand Down
36 changes: 33 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ endif

# Used for installing build dependencies in CI.
.PHONY: install-build-deps
install-build-deps: install-lint-build-deps
install-build-deps: install-lint-build-deps free-disk-space
ifeq ($(APT_PACKAGES),)
else ifeq ($(shell which apt-get),)
$(warning Cannot install build dependencies without apt.)
Expand All @@ -57,20 +57,50 @@ else
sudo $(APT) install $(APT_PACKAGES)
endif
ifeq ($(CI)_$(OS),true_Linux) # Only do this in CI on Linux
# In CI, delete the android SDK if it's installed. It's kinda huge!
sudo rm -rf /usr/local/lib/android/
# Likewise, configure LXD in CI
echo "::group::Configure LXD"
sudo groupadd --force --system lxd
sudo usermod --append --groups lxd $(USER)
echo "::endgroup::"
# Install multipass in CI
echo "::group::Configure Multipass"
sudo snap install multipass
sudo groupadd --force --system kvm
sudo usermod --append --groups kvm $(USER)
# Wait for the socket to appear and make it accessible
for i in $$(seq 1 30); do [ -S /var/snap/multipass/common/multipass_socket ] && break || sleep 1; done
sudo chmod 666 /var/snap/multipass/common/multipass_socket || true
echo "::endgroup::"
else ifeq ($(CI)_$(OS),true_Darwin) # Only do this in CI on macOS
brew install multipass
# Wait for the socket to appear and ensure multipassd is ready
for i in $$(seq 1 60); do [ -S /var/run/multipass_socket ] && sudo multipass version && break || sleep 2; done
sudo multipass set local.driver=qemu || true
(brew cleanup --prune=all > /dev/null 2>&1 &)
# Disable spotlight because it tries to index the multipass images, crashing
# macOS 14+ runners. Thapple.
sudo mdutil -a -i off
endif

.PHONY: free-disk-space
free-disk-space: ##- Free up disk space in CI
ifeq ($(CI),true)
# This target is only ever intended to run in CI, and is a no-op otherwise.
@echo "::group::Free disk space"
@df -h
ifeq ($(OS),Linux)
sudo rm -rf /usr/local/lib/android || true
endif
ifeq ($(OS),Darwin)
sudo rm -rf /usr/local/lib/android || true
sudo rm -rf /usr/local/share/dotnet || true
CURRENT_XCODE=$$(xcode-select -p | sed 's|/Contents/Developer||') && \
echo "Keeping $$CURRENT_XCODE, removing others..." && \
sudo find /Applications -name "Xcode_*.app" -maxdepth 1 -not -path "*$$CURRENT_XCODE*" -exec rm -rf {} + || true
endif
@df -h
@echo "::endgroup::"
endif

# If additional build dependencies need installing in order to build the linting env.
.PHONY: install-lint-build-deps
Expand Down
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ classifiers = [
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.14",
"Topic :: Software Development :: Libraries",
"Topic :: Software Development :: Libraries :: Python Modules",
]
Expand Down
Loading
Loading