Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
88 changes: 42 additions & 46 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,7 @@ jobs:
- "windows-app"
- "iOS"
- "android"
python-version: [ "3.10", "3.11", "3.12", "3.13", "3.14" ]
exclude:
# Android doesn't have 3.14 support packages yet
- python-version: "3.14"
backend: "android"
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]

include:
- runs-on: ubuntu-latest
Expand Down Expand Up @@ -112,44 +108,44 @@ jobs:
sudo udevadm trigger --name-match=kvm

steps:
- name: Checkout
uses: actions/checkout@v6.0.3
with:
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@v6.2.0
if: matrix.python-version != 'system'
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true

- name: Prepare macOS
# GitHub recommends explicitly selecting the desired Xcode version:
# https://github.com/actions/runner-images/issues/12541#issuecomment-3083850140
# This became a necessity as a result of
# https://github.com/actions/runner-images/issues/12541 and
# https://github.com/actions/runner-images/issues/12751.
if: matrix.runs-on == 'macos-latest'
run: |
sudo xcode-select --switch /Applications/Xcode_16.4.app

- name: Install Dependencies
run: ${{ matrix.pre-command }}

- name: Install Briefcase
uses: beeware/.github/.github/actions/install-briefcase@main

- name: Test App
timeout-minutes: 15
run: briefcase run ${{ matrix.briefcase-target }} --test ${{ matrix.briefcase-run-args }}

- name: Package
run: briefcase package ${{ matrix.briefcase-target }} --update --adhoc-sign

- name: Upload Logs
uses: actions/upload-artifact@v7.0.1
if: failure()
with:
name: build-failure-logs-${{ matrix.backend }}-${{ matrix.python-version }}
path: logs/*
- name: Checkout
uses: actions/checkout@v6.0.3
with:
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@v6.2.0
if: matrix.python-version != 'system'
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true

- name: Prepare macOS
# GitHub recommends explicitly selecting the desired Xcode version:
# https://github.com/actions/runner-images/issues/12541#issuecomment-3083850140
# This became a necessity as a result of
# https://github.com/actions/runner-images/issues/12541 and
# https://github.com/actions/runner-images/issues/12751.
if: matrix.runs-on == 'macos-latest'
run: |
sudo xcode-select --switch /Applications/Xcode_16.4.app

- name: Install Dependencies
run: ${{ matrix.pre-command }}

- name: Install Briefcase
uses: beeware/.github/.github/actions/install-briefcase@main

- name: Test App
timeout-minutes: 15
run: briefcase run ${{ matrix.briefcase-target }} --test ${{ matrix.briefcase-run-args }}

- name: Package
run: briefcase package ${{ matrix.briefcase-target }} --update --adhoc-sign

- name: Upload Logs
uses: actions/upload-artifact@v7.0.1
if: failure()
with:
name: build-failure-logs-${{ matrix.backend }}-${{ matrix.python-version }}
path: logs/*
10 changes: 6 additions & 4 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,14 @@ requires = [
"x-pth-tester",

# Cryptography provides an ABI3 wheel for all desktop platforms and iOS.
"""cryptography; \
# Crptography 49 doesn't publish x86-64 or universal macOS wheels.
"""cryptography < 49.0; \
(platform_system != 'Android' and python_version < '3.15') \
or (platform_system == 'Android' and python_version < '3.14')""",
# lru_dict available everywhere
"lru_dict; python_version < '3.15'",
"""lru_dict; \
(platform_system != 'Android' and python_version < '3.15') \
or (platform_system == 'Android' and python_version < '3.14')""",
# pillow not available anywhere on 3.15, or on Android for 3.14+.
"""pillow; \
(platform_system != 'Android' and python_version < '3.15') \
Expand Down Expand Up @@ -60,7 +63,7 @@ requirement_installer_args = [
requires = [
# Provide a source of binary wheels that aren't provided on PyPI.
"rubicon-objc",
"std-nslog~=1.0.3",
"std-nslog~=2.0.0",
]
# support_package = "../Python-Apple-support/dist/Python-3.14-macOS-support.custom.tar.gz"

Expand Down Expand Up @@ -119,7 +122,6 @@ requires = [
[tool.briefcase.app.testbed.iOS]
requires = [
"rubicon-objc",
"std-nslog~=1.0.3",
]
min_os_version = "17.0"
# support_package = "../Python-Apple-support/dist/Python-3.14-iOS-support.custom.tar.gz"
Expand Down