Skip to main content

Publishing BoutiqueDB (SPI / GitHub)

Permanent rule: iOS + macOS

Public / SPI releases must include a multi-arch TursoSDK.xcframework: Never ship macOS-only binaries for SPI. See AGENTS.md.

Checklist

  • LICENSE (MIT), NOTICE
  • Package icon (Assets/BoutiqueDB.png, icon.png)
  • .spi.yml — macos-xcodebuild + ios
  • Package.swift without unsafeFlags (binary TursoSDK)
  • Public repo BoutiqueDB-Swift
  • Multi-arch xcframework (macOS + iOS device + Simulator)
  • Stable engine binary v0.2.1 + zip asset + checksum in Package.swift
  • Production-beta package tag v0.3.0-beta.1 (reuses verified v0.2.1 binary)
  • SPI “Add a Package” OAuth (owner): https://swiftpackageindex.com/add-a-package
  • GitHub Actions billing unlocked (hosted runners currently blocked on account)

Build binary

Vendor/TursoSDK.xcframework is gitignored. CI and releases attach/build the zip.

Consumer install

Tag + release

Prerelease tags reuse the already verified binary version declared in Package.swift; the release workflow runs source, test, DocC, consumer, and iOS gates before creating a GitHub prerelease. Stable tags rebuild and attach a new full multi-architecture engine archive.

SPI

  1. Clean clone resolves (no local Vendor binary → URL binaryTarget).
  2. No unsafeFlags.
  3. https://swiftpackageindex.com/add-a-package → https://github.com/tuliopc23/BoutiqueDB-Swift
  4. Expect macOS + iOS platform badges after first index.

Verifying a release asset

Before tagging, confirm the published TursoSDK.xcframework.zip is multi-arch and matches Package.swift:
Expected slices: macOS arm64+x86_64, ios-arm64, ios-*-simulator.

GitHub Actions note

If Actions jobs fail immediately with account is locked due to a billing issue, that is a hosting/billing lock, not a package defect. Local gates before push: