Skip to content

Commit 25edd2d

Browse files
feat(packaging): native installers via Briefcase + CI/CD
Add cross-platform packaging with BeeWare Briefcase: - Windows MSI (WiX via dotnet-tool) and ZIP artifacts. - macOS DMG for arm64, ad-hoc signed; optional Developer ID notarization. - Linux system package (.deb/.rpm) for x86_64. - pyproject.toml Briefcase config with min_os_version 13.0 on macOS and pip constraints exported from uv.lock for reproducible installs. - GitHub Actions release workflow (tag or workflow_dispatch) with optional code-signing gates for Windows (signtool/PFX) and macOS (notarytool). - CI: actionlint workflow validation, uv audit dependency audit, Briefcase ZIP smoke build. - Dependabot for GitHub Actions and uv with a 7-day cooldown. - Pre-commit migrated to pre-commit-uv. - CHANGELOG.md following Keep a Changelog 1.1.0. - Drop legacy PyInstaller / Nuitka / Inno Setup / NSIS build scripts.
1 parent 0a88bdb commit 25edd2d

35 files changed

Lines changed: 1616 additions & 1164 deletions

.github/dependabot.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: "uv"
4+
directory: "/"
5+
schedule:
6+
interval: "weekly"
7+
cooldown:
8+
default-days: 7
9+
open-pull-requests-limit: 10
10+
labels:
11+
- "dependencies"
12+
- "python"
13+
14+
- package-ecosystem: "github-actions"
15+
directory: "/"
16+
schedule:
17+
interval: "weekly"
18+
open-pull-requests-limit: 10
19+
labels:
20+
- "dependencies"
21+
- "ci"

.github/workflows/ci.yml

Lines changed: 64 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,41 @@ name: CI - Lint and Type Check
33
on:
44
push:
55
branches:
6-
- "**"
6+
- main
77
pull_request:
88
branches:
99
- "**"
1010

1111
jobs:
12+
workflow-lint:
13+
name: Workflow lint (actionlint)
14+
runs-on: ubuntu-latest
15+
16+
steps:
17+
- name: Checkout repository
18+
uses: actions/checkout@v6
19+
20+
- name: Lint GitHub workflow files
21+
uses: rhysd/actionlint@v1.7.8
22+
23+
dependency-audit:
24+
name: Dependency audit (uv audit)
25+
runs-on: ubuntu-latest
26+
27+
steps:
28+
- name: Checkout repository
29+
uses: actions/checkout@v6
30+
31+
- name: Set up uv
32+
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57
33+
with:
34+
python-version: "3.14"
35+
enable-cache: true
36+
37+
- name: Audit dependencies for vulnerabilities
38+
run: |
39+
uv audit
40+
1241
lint:
1342
name: Lint
1443
runs-on: ubuntu-latest
@@ -66,8 +95,7 @@ jobs:
6695
include:
6796
- os: ubuntu-latest
6897
- os: windows-latest
69-
# Apple Silicon (arm64); see https://github.com/actions/runner-images
70-
- os: macos-14
98+
- os: macos-latest
7199

72100
steps:
73101
- name: Checkout repository
@@ -99,3 +127,36 @@ jobs:
99127
QT_QPA_PLATFORM: offscreen
100128
run: |
101129
uv run pytest --cov-fail-under=48
130+
131+
package-briefcase-zip:
132+
name: Package Briefcase ZIP (Windows)
133+
runs-on: windows-latest
134+
135+
steps:
136+
- name: Checkout repository
137+
uses: actions/checkout@v6
138+
139+
- name: Set up uv
140+
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57
141+
with:
142+
python-version: "3.14"
143+
enable-cache: true
144+
145+
- name: Sync dependencies (incl. build / Briefcase)
146+
run: |
147+
uv sync --locked --dev --group build
148+
149+
- name: Briefcase create / build / package (zip)
150+
env:
151+
QT_QPA_PLATFORM: offscreen
152+
run: |
153+
uv run briefcase create windows app
154+
uv run briefcase build windows app
155+
uv run briefcase package windows -p zip
156+
157+
- name: Upload Briefcase ZIP artifact
158+
uses: actions/upload-artifact@v7
159+
with:
160+
name: briefcase-windows-zip-${{ github.sha }}
161+
path: dist/
162+
if-no-files-found: warn

0 commit comments

Comments
 (0)