blitztext-app-linux/.github/workflows/ci.yml
mARTin-B78 5484bc6a1b Add Wayland, Tests, CI, and OpenWakeword integration
- Wayland support: text delivery using wtype or ydotool (paste.py)
- Testing: added Pytest coverage for routing, quality, and config logic
- CI/CD: added test-linux job to .github/workflows/ci.yml
- Feature: Hands-free dictation using an external wyoming-openwakeword
  server, respecting the /tmp/wake_muted toggle.
2026-06-05 17:16:05 +02:00

86 lines
2.1 KiB
YAML

name: CI
on:
pull_request:
push:
branches:
- main
permissions:
contents: read
jobs:
build-macos:
name: Build macOS app
runs-on: macos-14
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Secret hygiene scan
run: |
patterns_file=.github/secret-scan-patterns.txt
if [ ! -f "$patterns_file" ]; then
echo "Missing $patterns_file"
exit 1
fi
pattern="$(grep -vE '^[[:space:]]*(#|$)' "$patterns_file" | paste -sd'|' -)"
if [ -z "$pattern" ]; then
echo "No patterns loaded from $patterns_file"
exit 1
fi
if grep -RInE \
--exclude-dir=.git \
--exclude=secret-scan-patterns.txt \
"$pattern" .; then
echo "Potential secret or private project reference found."
exit 1
fi
- name: Select Xcode
run: sudo xcode-select -s /Applications/Xcode_16.2.app || sudo xcode-select -s /Applications/Xcode.app
- name: Install XcodeGen
run: |
if ! command -v xcodegen >/dev/null 2>&1; then
brew install xcodegen
fi
- name: Build
run: ./build.sh --debug
test-linux:
name: Test Linux app
runs-on: ubuntu-24.04
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: "pip"
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y python3-gi gir1.2-gtk-3.0 gir1.2-appindicator3-0.1 libgirepository1.0-dev libcairo2-dev python3-dev
cd linux
pip install -r requirements.txt
pip install pytest ruff PyGObject
- name: Syntax check
run: |
cd linux
python -m py_compile blitztext/*.py
- name: Run Pytest
run: |
cd linux
PYTHONPATH=. pytest tests