Skip to content

Build & Package

Build & Package #18

Workflow file for this run

name: Build & Package
permissions:
contents: read
on:
workflow_dispatch: # Allow manual triggering
jobs:
build-macos:
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v6.2.0
with:
python-version: "3.14t"
- name: Create virtual environment
run: |
python -m venv .venv
# Use the correct Python interpreter
.venv/bin/python -m pip install --upgrade pip
.venv/bin/python -m pip install -r requirements.txt
- name: Build binary
run: .venv/bin/python build.py
- name: Install create-dmg
run: brew install create-dmg
- name: Build macOS installer
run: |
chmod +x dev/macos_installer.sh
bash dev/macos_installer.sh
- name: Upload macOS installer
uses: actions/upload-artifact@v4
with:
name: macos-installer
path: dist/AppUsageGUI_v*_macOS_setup.dmg
build-windows:
runs-on: windows-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v6.2.0
with:
python-version: "3.14t"
- name: Create virtual environment
run: |
python -m venv .venv
.venv\Scripts\python.exe -m pip install --upgrade pip
.venv\Scripts\python.exe -m pip install -r requirements.txt
- name: Build binary
run: .venv\Scripts\python.exe build.py
- name: Install Inno Setup
run: choco install innosetup -y
- name: Build Windows installer
run: |
# Read version from _version.py
$version = python -c "import sys; sys.path.insert(0, 'src'); from _version import __version__; print(__version__)"
# Replace version in .iss file
(Get-Content dev\windows_installer.iss) -replace '#define MyAppVersion ".*"', "#define MyAppVersion `"$version`"" | Set-Content dev\windows_installer.iss
# Build installer
iscc dev\windows_installer.iss
- name: Upload Windows installer
uses: actions/upload-artifact@v4
with:
name: windows-installer
path: dist\AppUsageGUI_v*_WINDOWS_setup.exe