Spaces:
Paused
Paused
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| jobs: | |
| build-and-test: | |
| runs-on: macos-latest | |
| defaults: | |
| run: | |
| shell: bash | |
| working-directory: swabble | |
| steps: | |
| - name: Checkout swabble | |
| uses: actions/checkout@v4 | |
| with: | |
| path: swabble | |
| - name: Select Xcode 26.1 (prefer 26.1.1) | |
| run: | | |
| set -euo pipefail | |
| # pick the newest installed 26.1.x, fallback to newest 26.x | |
| CANDIDATE="$(ls -d /Applications/Xcode_26.1*.app 2>/dev/null | sort -V | tail -1 || true)" | |
| if [[ -z "$CANDIDATE" ]]; then | |
| CANDIDATE="$(ls -d /Applications/Xcode_26*.app 2>/dev/null | sort -V | tail -1 || true)" | |
| fi | |
| if [[ -z "$CANDIDATE" ]]; then | |
| echo "No Xcode 26.x found on runner" >&2 | |
| exit 1 | |
| fi | |
| echo "Selecting $CANDIDATE" | |
| sudo xcode-select -s "$CANDIDATE" | |
| xcodebuild -version | |
| - name: Show Swift version | |
| run: swift --version | |
| - name: Install tooling | |
| run: | | |
| brew update | |
| brew install swiftlint swiftformat | |
| - name: Format check | |
| run: | | |
| ./scripts/format.sh | |
| git diff --exit-code | |
| - name: Lint | |
| run: ./scripts/lint.sh | |
| - name: Test | |
| run: swift test --parallel | |