Fail model load early when free RAM is below the catalog estimate #650
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| # Detect which files changed to decide which jobs to run | |
| changes: | |
| name: Detect Changes | |
| runs-on: ubuntu-latest | |
| outputs: | |
| app: ${{ steps.filter.outputs.app }} | |
| web: ${{ steps.filter.outputs.web }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Check paths | |
| uses: dorny/paths-filter@v3 | |
| id: filter | |
| with: | |
| filters: | | |
| app: | |
| - 'Sources/**' | |
| - 'Tests/**' | |
| - 'Package.swift' | |
| - 'Package.resolved' | |
| - 'scripts/**' | |
| - 'Makefile' | |
| - 'VocaMac.entitlements' | |
| web: | |
| - 'web/**' | |
| # Build and test Swift app (only when app source changes) | |
| build-and-test: | |
| name: Build & Test App | |
| needs: changes | |
| if: needs.changes.outputs.app == 'true' | |
| runs-on: macos-15 | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Cache SPM dependencies | |
| uses: actions/cache@v5 | |
| with: | |
| path: .build | |
| key: spm-${{ runner.os }}-${{ hashFiles('Package.resolved') }} | |
| restore-keys: | | |
| spm-${{ runner.os }}- | |
| - name: Select Xcode 26 | |
| run: ./scripts/select-xcode-26.sh | |
| - name: Build (Debug) | |
| run: swift build | |
| - name: Test | |
| run: swift test | |
| - name: Build (Release) | |
| run: swift build -c release | |
| - name: Initialize Xcode tools | |
| run: sudo xcodebuild -runFirstLaunch | |
| - name: Verify app bundle | |
| run: | | |
| ./scripts/build.sh release | |
| test -d VocaMac.app || exit 1 | |
| codesign -v VocaMac.app || echo "Codesign verification note: expected for ad-hoc CI builds" | |
| test -f VocaMac.app/Contents/Resources/Assets.car || echo "⚠️ Assets.car missing" | |
| echo "App bundle verified" | |
| # Build website (only when web files change) | |
| build-website: | |
| name: Build Website | |
| needs: changes | |
| if: needs.changes.outputs.web == 'true' | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup Hugo | |
| uses: peaceiris/actions-hugo@v3 | |
| with: | |
| hugo-version: '0.165.0' | |
| extended: true | |
| - name: Build and test website | |
| working-directory: web | |
| run: npm run check | |
| - name: Validate rendered HTML | |
| working-directory: web | |
| run: npx --yes html-validate 'public/**/*.html' | |
| - name: Validate CSS | |
| working-directory: web | |
| run: npx --yes stylelint static/style.css |