Skip to content
78 changes: 78 additions & 0 deletions .github/workflows/swift.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,81 @@ jobs:
run: swift build -c ${{ matrix.config }}
- name: Test
run: swift test -c ${{ matrix.config }}

android:
name: Android
runs-on: macos-15
strategy:
fail-fast: false
matrix:
config: ["debug", "release"]
env:
SWIFT_VERSION: "6.3.2"
ANDROID_NDK_VERSION: "27.2.12479018"
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Swift
run: |
curl -O https://download.swift.org/swiftly/darwin/swiftly.pkg
installer -pkg swiftly.pkg -target CurrentUserHomeDirectory
~/.swiftly/bin/swiftly init --assume-yes --skip-install
echo "$HOME/.swiftly/bin" >> "$GITHUB_PATH"
source ~/.swiftly/env.sh
swiftly install ${{ env.SWIFT_VERSION }}
swiftly use ${{ env.SWIFT_VERSION }}
echo "$(swiftly use --print-location)/usr/bin" >> "$GITHUB_PATH"
- name: Install Android NDK
run: $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --install "ndk;${{ env.ANDROID_NDK_VERSION }}"
- name: Install Swift SDK for Android
run: |
curl -L -o android-sdk.artifactbundle.tar.gz "https://download.swift.org/swift-${{ env.SWIFT_VERSION }}-release/android-sdk/swift-${{ env.SWIFT_VERSION }}-RELEASE/swift-${{ env.SWIFT_VERSION }}-RELEASE_android.artifactbundle.tar.gz"
CHECKSUM=$(swift package compute-checksum android-sdk.artifactbundle.tar.gz)
swift sdk install android-sdk.artifactbundle.tar.gz --checksum "$CHECKSUM"
ANDROID_NDK_HOME="$ANDROID_HOME/ndk/${{ env.ANDROID_NDK_VERSION }}" \
bash "$HOME/Library/org.swift.swiftpm/swift-sdks/swift-${{ env.SWIFT_VERSION }}-RELEASE_android.artifactbundle/swift-android/scripts/setup-android-sdk.sh"
- name: Build
run: TARGET_OS_ANDROID=1 swift build --swift-sdk aarch64-unknown-linux-android28 -c ${{ matrix.config }}

ios:
name: iOS
runs-on: macos-26
strategy:
fail-fast: false
matrix:
config: ["debug", "release"]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Select Simulator
run: |
DEVICE_ID=$(xcrun simctl list devices available -j | python3 -c "import json,sys; d=json.load(sys.stdin)['devices']; devices=[v for vs in d.values() for v in vs if 'iPhone' in v['name']]; print(devices[0]['udid'])")
echo "DEVICE_ID=${DEVICE_ID}" >> "$GITHUB_ENV"
- name: Build
run: >
xcodebuild build -scheme CoreModel-SQLite
-destination "generic/platform=iOS"
-configuration ${{ matrix.config == 'release' && 'Release' || 'Debug' }}
-skipMacroValidation -skipPackagePluginValidation
- name: Test
run: >
xcodebuild test -scheme CoreModel-SQLite
-destination "id=${{ env.DEVICE_ID }}"
-configuration ${{ matrix.config == 'release' && 'Release' || 'Debug' }}
-skipMacroValidation -skipPackagePluginValidation
ENABLE_TESTABILITY=YES

android-test:
name: Android Test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Test on Android emulator
uses: skiptools/swift-android-action@v2
with:
swift-version: "6.3.2"
android-api-level: 28
swift-configuration: debug
free-disk-space: true
run-tests: true
1 change: 1 addition & 0 deletions .swift-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
6.3.2
23 changes: 18 additions & 5 deletions Package.swift
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
// swift-tools-version: 6.0
// swift-tools-version: 6.1
import PackageDescription
import Foundation

// Android has no system libsqlite3, so it needs SQLite.swift's embedded
// copy. macOS and Linux keep SQLite.swift's own default for the platform.
let isAndroid = ProcessInfo.processInfo.environment["TARGET_OS_ANDROID"] == "1"

let sqliteDependency: Package.Dependency = isAndroid
? .package(
url: "https://github.com/stephencelis/SQLite.swift.git",
from: "0.16.0",
traits: ["SQLiteSwiftCSQLite"]
)
: .package(
url: "https://github.com/stephencelis/SQLite.swift.git",
from: "0.16.0"
)

let package = Package(
name: "CoreModel-SQLite",
Expand All @@ -20,10 +36,7 @@ let package = Package(
url: "https://github.com/PureSwift/CoreModel",
from: "2.6.3"
),
.package(
url: "https://github.com/stephencelis/SQLite.swift.git",
from: "0.16.0"
)
sqliteDependency
],
targets: [
.target(
Expand Down
Loading