Repository navigation
Add CI, fix SPM header imports and macOS tests, prepare 3.0.8 - #361
Conversation
alexanderdibenedetto
commented
Oct 14, 2026
- GitHub Actions on PRs to master: iOS/macOS/tvOS tests, watchOS and static library builds, Swift package validation; steps live in scripts/
- Fall back to quoted imports in public headers under SwiftPM; the framework-style imports from Address issue #354 and update project settings to recommended ones per Xcode 26 #355 broke SPM builds
- Guard UIApplication mocks so the macOS test target compiles
- Set TrustKitVersion and the podspec to 3.0.8 (reports were sending 3.0.0)
- GitHub Actions on PRs to master: iOS/macOS/tvOS tests, watchOS and static library builds, Swift package validation; steps live in scripts/ - Fall back to quoted imports in public headers under SwiftPM; the framework-style imports from #355 broke SPM builds - Guard UIApplication mocks so the macOS test target compiles - Set TrustKitVersion and the podspec to 3.0.8 (reports were sending 3.0.0)
…ramework to releases - Platform names distinguish device and simulator (ios vs ios-simulator, etc.) - Select simulators by name on the runner's newest runtime instead of a Python lookup - Build a static XCFramework of all seven slices on PRs; release.yml attaches it to published releases as TrustKit-static.zip - Drop build.sh and the TrustKit_Static CI build
… (was hardcoded 1.0)
There was a problem hiding this comment.
🟢 Approval recommended
The changes are internally consistent and the updated CI validates the key platform, packaging, and SwiftPM paths.
0 open findings
What changed in this PR
Adds GitHub Actions CI/release automation, restores SwiftPM-compatible imports and macOS test compilation, and prepares version 3.0.8.
Changes:
- Adds multi-platform testing, package validation, and XCFramework release scripts.
- Fixes public-header imports and platform-specific test mocks.
- Aligns framework, runtime, and CocoaPods versions to 3.0.8.
| File | Description |
|---|---|
.github/workflows/ci.yml |
Adds multi-platform CI jobs. |
.github/workflows/release.yml |
Publishes the static XCFramework. |
.gitignore |
Ignores CI outputs. |
README.md |
Updates the build badge. |
TrustKit.podspec |
Sets version 3.0.8. |
TrustKit.xcodeproj/project.pbxproj |
Sets the marketing version. |
TrustKit/Framework/Info.plist |
Uses the marketing version. |
TrustKit/TSKTrustKitConfig.m |
Updates the reported version. |
TrustKit/public/TSKPinningValidator.h |
Adds SwiftPM import fallback. |
TrustKit/public/TSKPinningValidatorCallback.h |
Adds SwiftPM import fallbacks. |
TrustKit/public/TSKPinningValidatorResult.h |
Adds SwiftPM import fallback. |
TrustKit/public/TrustKit.h |
Adds umbrella-header import fallbacks. |
TrustKitTests/TSKEndToEndNSURLSessionTests.m |
Extends network-test timeouts. |
TrustKitTests/TSKEndToEndSwizzlingTests.m |
Extends the network-test timeout. |
TrustKitTests/TSKPinningValidatorTests.m |
Guards UIKit mocks on macOS. |
TrustKitTests/TSKPublicKeyAlgorithmTests.m |
Guards UIKit-dependent tests. |
scripts/build_xcframework.sh |
Builds the static XCFramework. |
scripts/lib.sh |
Provides shared build helpers. |
scripts/run_unit_tests.sh |
Runs platform-specific tests. |
scripts/validate_swift_package.sh |
Validates SwiftPM consumers. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
There was a problem hiding this comment.
LGTM — straightforward CI/CD migration from Bitrise to GitHub Actions along with a version bump and an SPM header-import fix.
What was reviewed:
- New GitHub Actions workflows and scripts/*.sh wrappers around xcodebuild (unit tests, XCFramework build/release, SPM validation)
- Conditional angle-bracket vs. quoted imports in the public headers (TrustKit.h, TSKPinningValidator*.h) for framework vs. SPM distribution
- Test timeout increases (5s→30s) and new TARGET_OS_IPHONE guards around UIApplication/OCMock usage for macOS/tvOS test targets
- Checked validate_swift_package.sh's generated consumer Package.swift missing a
platforms:array — ruled out as a blocker since it was already flagged and investigated separately
Extended reasoning...
The change is a CI/CD migration (Bitrise→GitHub Actions) plus supporting shell scripts, a version bump to 3.0.8, a mechanical conditional-import fallback in public headers for SPM support, and test-only guards/timeout tweaks — no auth, crypto, or pinning-validation logic is touched. No CODEOWNERS file exists, no prior reviewer objections are outstanding in the timeline, and the bug-hunting pass reported zero findings; the one candidate issue it considered (missing platforms array in the generated SPM consumer manifest) was investigated and ruled out. Given the mechanical, self-contained nature of the changes and lack of any security-sensitive surface, this is safe to approve without requiring a human look.
Without an OS, xcodebuild picks the newest installed runtime, so a runner image with an extra runtime fails to find the named simulator. Keep unformatted xcodebuild lines so destination errors show what was available.