Repository navigation
Merge pull request #687 from liminisapp/release/0.17.0 #105
Workflow file for this run
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: Swift sidecar CI | |
| # Re-enabled 2026-08-25 (#502) after ~3 months disabled. | |
| # | |
| # The `native/local-inference/` Swift package targets macOS 26 (Foundation | |
| # Models on-device LLM) and `swift-tools-version: 6.2`. This job was | |
| # `if: false` from 2026-05-30 because GitHub's `macos-latest` runner image | |
| # was still macOS 15 + Swift 6.1 at the time, so `swift build`/`swift test` | |
| # failed immediately with a tools-version mismatch. Every run since — | |
| # including every release tag from v0.13.0 through v0.13.4 — reported | |
| # `skipped`, giving no CI signal at all. | |
| # | |
| # By 2026-08-25, GitHub's macOS 26 runner rollout (GA 2026-02-26, | |
| # `macos-latest` migration completed ~2026-07-15 per | |
| # actions/runner-images#14167) had long since resolved the original | |
| # blocker. Rather than resume floating on `macos-latest`, this job pins the | |
| # explicit `macos-26` label so the *next* time the package's minimum macOS | |
| # requirement outruns `macos-latest` (as it did here), the job fails loudly | |
| # on a still-valid `macos-26` runner instead of silently skipping again. See | |
| # docs/adr/0502-pin-explicit-macos-runner-for-swift-sidecar-ci.md for the | |
| # full rationale, including why this check is not yet a required | |
| # branch-protection status check. | |
| # | |
| # The existing test suite (Tests/LocalInferenceTests/) runs entirely on | |
| # in-tree stub `.mlpackage` fixtures and mock adapters — no test here | |
| # depends on the ~400 MB CoreML embedding asset from | |
| # prepare-embedding-assets.sh or on live Foundation Models availability, so | |
| # `swift test` runs unmodified with no filtering. | |
| # | |
| # Contributors should still run `swift test` locally inside | |
| # `native/local-inference/` on a macOS 26 dev machine before pushing; this | |
| # job is now a real, enforced backstop for that, not a replacement. | |
| # | |
| # `push` is scoped to `main`/`maint/**` plus release tags (not left | |
| # unscoped) for the same reason `ci.yml`'s header documents: an unscoped | |
| # `push` alongside `pull_request` over the same paths fires two concurrent | |
| # runs on every push to an open PR branch — one via `push`, one via | |
| # `pull_request` — doubling usage of the `macos-26` runner class and | |
| # producing duplicate status checks. Release tags need their own explicit | |
| # entry here (FR-002/SC-002) since a `branches:` filter alone excludes tag | |
| # refs entirely. The concurrency group below additionally cancels a | |
| # still-running check when a newer commit lands on the same ref. | |
| on: | |
| push: | |
| branches: [main, 'maint/**'] | |
| tags: | |
| - '**[0-9]+.[0-9]+.[0-9]+*' | |
| paths: | |
| - 'native/local-inference/**' | |
| - '.github/workflows/swift.yml' | |
| pull_request: | |
| paths: | |
| - 'native/local-inference/**' | |
| - '.github/workflows/swift.yml' | |
| concurrency: | |
| group: swift-${{ github.workflow }}-${{ github.head_ref || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| swift-test: | |
| name: swift build & test (macos-26) | |
| runs-on: macos-26 | |
| defaults: | |
| run: | |
| working-directory: native/local-inference | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - name: Show Swift version | |
| run: swift --version | |
| - name: swift build | |
| run: swift build | |
| - name: swift test | |
| run: swift test |