Add iOS release readiness docs and CI
This commit is contained in:
36
.github/workflows/ios-rust.yml
vendored
Normal file
36
.github/workflows/ios-rust.yml
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
name: iOS and Rust
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
rust:
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: dtolnay/rust-toolchain@stable
|
||||
- name: Format
|
||||
run: cargo fmt -- --check
|
||||
- name: Core check
|
||||
run: cargo check -p tele-core
|
||||
- name: Workspace clippy
|
||||
run: cargo clippy --workspace --all-targets --all-features -- -D warnings
|
||||
- name: Workspace tests
|
||||
run: cargo test --workspace --all-features
|
||||
- name: Generate iOS FFI bindings
|
||||
run: scripts/generate-ios-ffi-bindings.sh /tmp/tele-ios-ffi
|
||||
- name: Swift bindings typecheck
|
||||
run: swiftc -typecheck -I /tmp/tele-ios-ffi/Headers /tmp/tele-ios-ffi/Swift/tele_ios_ffi.swift
|
||||
|
||||
ios-shell:
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Build SwiftUI app shell
|
||||
working-directory: apps/ios/TeleTuiIOS
|
||||
run: swift build --product TeleTuiIOSApp
|
||||
- name: Run SwiftUI smoke tests
|
||||
working-directory: apps/ios/TeleTuiIOS
|
||||
run: swift run TeleTuiIOSSmokeTests
|
||||
12
apps/ios/TeleTuiIOS/Resources/PrivacyInfo.xcprivacy
Normal file
12
apps/ios/TeleTuiIOS/Resources/PrivacyInfo.xcprivacy
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>NSPrivacyCollectedDataTypes</key>
|
||||
<array/>
|
||||
<key>NSPrivacyAccessedAPITypes</key>
|
||||
<array/>
|
||||
<key>NSPrivacyTracking</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</plist>
|
||||
38
docs/ios/release-checklist.md
Normal file
38
docs/ios/release-checklist.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# iOS Release Checklist
|
||||
|
||||
## Support Matrix
|
||||
|
||||
- Minimum iOS: 17.0
|
||||
- Swift package shell also builds on macOS 14 for local smoke coverage.
|
||||
- Rust targets: iOS device and simulator targets still need TDLib validation.
|
||||
- TDLib: `tdlib-rs` 1.2.0 with `download-tdlib`; iOS packaging is not validated yet.
|
||||
- Bridge: UniFFI 0.31.1 generated Swift bindings.
|
||||
|
||||
## Required Before TestFlight
|
||||
|
||||
1. Install and select full Xcode with `xcode-select`.
|
||||
2. Create the Xcode app project or wire the Swift package into an Xcode app target.
|
||||
3. Add app icon, launch screen, bundle id, signing team, notification capability, and entitlements.
|
||||
4. Build TDLib for simulator and device architectures.
|
||||
5. Package Rust static libraries and generated UniFFI Swift/header/modulemap output into an XCFramework.
|
||||
6. Run simulator smoke with fake bridge.
|
||||
7. Run real-device smoke with real Telegram credentials.
|
||||
8. Archive and upload to TestFlight.
|
||||
|
||||
## CI Gates
|
||||
|
||||
- `cargo fmt -- --check`
|
||||
- `cargo check -p tele-core`
|
||||
- `cargo clippy --workspace --all-targets --all-features -- -D warnings`
|
||||
- `cargo test --workspace --all-features`
|
||||
- `scripts/generate-ios-ffi-bindings.sh`
|
||||
- `swiftc -typecheck` for generated Swift bindings
|
||||
- `swift build --product TeleTuiIOSApp`
|
||||
- `swift run TeleTuiIOSSmokeTests`
|
||||
|
||||
## Rollback
|
||||
|
||||
1. Disable the TestFlight build in App Store Connect.
|
||||
2. Re-upload the previous known-good archive.
|
||||
3. If the issue is TDLib/session related, revoke the affected build and keep existing accounts on the previous app version.
|
||||
4. Preserve account Application Support directories; do not delete TDLib databases during rollback unless the issue is confirmed to be corrupted local state.
|
||||
Reference in New Issue
Block a user