07067ca6c5
- Custom Keyboard Extension with push-to-talk UI - iOS 26 SpeechAnalyzer + DictationTranscriber (iOS 18 SF fallback) - OpenAI-compatible LLM client (4 built-in providers + custom) - 3-page onboarding flow + provider config UI - App Group shared storage for cross-process config - 8s LLM timeout with raw-transcript fallback - App Store privacy manifests for both targets - SwiftLint + XcodeGen + GitHub Actions CI - Unit tests (4/4 passing)
91 lines
2.6 KiB
YAML
91 lines
2.6 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [main, develop]
|
|
pull_request:
|
|
branches: [main, develop]
|
|
workflow_dispatch:
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
# =========================================================
|
|
# SwiftLint (light config — fails only on severe issues)
|
|
# =========================================================
|
|
lint:
|
|
name: SwiftLint
|
|
runs-on: macos-14
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Select Xcode
|
|
run: sudo xcode-select -s /Applications/Xcode_16.0.app
|
|
- name: Install SwiftLint
|
|
run: brew install swiftlint
|
|
- name: Run SwiftLint
|
|
run: |
|
|
swiftlint lint --quiet
|
|
swiftlint lint --quiet --strict
|
|
|
|
# =========================================================
|
|
# Build the main app + keyboard extension
|
|
# =========================================================
|
|
build:
|
|
name: Build (${{ matrix.destination }})
|
|
needs: lint
|
|
runs-on: macos-14
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
destination:
|
|
- generic/platform=iOS Simulator
|
|
xcode:
|
|
- "16.0"
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Select Xcode ${{ matrix.xcode }}
|
|
run: sudo xcode-select -s /Applications/Xcode_${{ matrix.xcode }}.app
|
|
- name: Install XcodeGen
|
|
run: brew install xcodegen
|
|
- name: Generate project
|
|
run: xcodegen generate
|
|
- name: Build
|
|
run: |
|
|
set -o pipefail
|
|
xcodebuild \
|
|
-project OSGKeyboard.xcodeproj \
|
|
-scheme OSGKeyboard \
|
|
-destination "${{ matrix.destination }}" \
|
|
-configuration Debug \
|
|
build \
|
|
| xcpretty
|
|
|
|
# =========================================================
|
|
# Unit tests
|
|
# =========================================================
|
|
test:
|
|
name: Unit tests
|
|
needs: lint
|
|
runs-on: macos-14
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Select Xcode
|
|
run: sudo xcode-select -s /Applications/Xcode_16.0.app
|
|
- name: Install XcodeGen
|
|
run: brew install xcodegen
|
|
- name: Generate project
|
|
run: xcodegen generate
|
|
- name: Run tests
|
|
run: |
|
|
set -o pipefail
|
|
xcodebuild test \
|
|
-project OSGKeyboard.xcodeproj \
|
|
-scheme OSGKeyboard \
|
|
-destination 'platform=iOS Simulator,name=iPhone 17' \
|
|
-configuration Debug \
|
|
-only-testing:OSGKeyboardTests \
|
|
CODE_SIGNING_ALLOWED=NO \
|
|
| xcpretty
|