This document provides comprehensive guidance for deploying Kingfisher across different platforms and distribution channels.
Kingfisher supports multiple deployment strategies:
The deployment process is fully automated using Fastlane with comprehensive platform coverage across iOS, macOS, tvOS, watchOS, and visionOS.
Configuration File: /Users/onevcat/Sync/github/Kingfisher/Kingfisher.podspec
Build Targets:
Key Features:
BUILD_LIBRARY_FOR_DISTRIBUTION)PrivacyInfo.xcprivacy)Configuration File: /Users/onevcat/Sync/github/Kingfisher/Package.swift
Build Targets:
KingfisherSources/Platform Support:
Output Locations:
build/
├── Kingfisher-{version}.xcframework.zip # All platforms
├── Kingfisher-iOS-{version}.xcframework.zip # iOS only
├── Kingfisher-{version}/
│ └── Kingfisher.xcframework/
│ ├── ios-arm64/
│ ├── ios-arm64_x86_64-simulator/
│ ├── macos-arm64_x86_64/
│ ├── tvos-arm64/
│ ├── tvos-arm64_x86_64-simulator/
│ ├── watchos-arm64_arm64_32_armv7k/
│ ├── watchos-arm64_i386_x86_64-simulator/
│ ├── xros-arm64/
│ └── xros-arm64_x86_64-simulator/
Platform-Specific Archives:
build/
├── Kingfisher-iphoneos.xcarchive/
├── Kingfisher-iphonesimulator.xcarchive/
├── Kingfisher-macosx.xcarchive/
├── Kingfisher-appletvos.xcarchive/
├── Kingfisher-appletvsimulator.xcarchive/
├── Kingfisher-watchos.xcarchive/
├── Kingfisher-watchsimulator.xcarchive/
├── Kingfisher-xros.xcarchive/
└── Kingfisher-xrsimulator.xcarchive/
iphoneos SDKiphonesimulator SDKbuild/Kingfisher-iOS-{version}.xcframework.zipmacosxappletvos SDKappletvsimulator SDKwatchos SDKwatchsimulator SDKxros SDKxrsimulator SDK# Full release workflow
bundle exec fastlane release version:X.X.X
# Skip tests during release (not recommended)
bundle exec fastlane release version:X.X.X skip_tests:true
# Create XCFramework only
bundle exec fastlane xcframework version:X.X.X
# Run linting
bundle exec fastlane lint
# Build for specific platform
bundle exec fastlane build_ci
# Lint podspec
pod lib lint Kingfisher.podspec
# Push to CocoaPods trunk (automated in release)
pod trunk push Kingfisher.podspec
# Build with SPM
swift build
# Test with SPM
swift test
# Validate package
swift package resolve
Build Workflow: .github/workflows/build.yaml
Test Workflow: .github/workflows/test.yaml
Matrix Configuration:
destination: [
'macOS',
'iOS Simulator,name=iPhone 15,OS=17.5',
'tvOS Simulator,name=Apple TV,OS=17.5',
'watchOS Simulator,name=Apple Watch Series 9 (41mm),OS=10.5'
]
The release process handles:
Pre-release Validation:
Version Management:
Build Artifacts:
Distribution:
Configuration: /Users/onevcat/Sync/github/Kingfisher/pre-change.yml
Structure:
version: X.X.X
name: Release Name
fix:
- Bug fix descriptions with issue links
add:
- New feature descriptions
| Script Location | Purpose |
|---|---|
fastlane/Fastfile |
Main deployment automation |
.github/workflows/build.yaml |
CI build workflow |
.github/workflows/test.yaml |
CI test workflow |
Gemfile |
Ruby dependencies |
| Package Type | Location |
|---|---|
| CocoaPods | Published to CocoaPods trunk |
| Swift Package Manager | Git repository tags |
| XCFramework (All) | build/Kingfisher-{version}.xcframework.zip |
| XCFramework (iOS) | build/Kingfisher-iOS-{version}.xcframework.zip |
| GitHub Release Assets | Attached to release tags |
| Variable | Purpose | Required |
|---|---|---|
GITHUB_TOKEN |
GitHub API authentication | Yes (release) |
DESTINATION |
CI build destination | Yes (CI) |
XCODE_VERSION |
Xcode version selection | Yes (CI) |
GitHub Actions:
bash -leo pipefail {0}Ruby Environment:
This deployment system ensures reliable, automated distribution across all supported Apple platforms with comprehensive testing and validation at each step.