ci(ios): automate App Store Connect build and upload for Testflight & Production - #2591
Conversation
|
Claude finished @ethicnology's task in 5m 55s —— View job Review: App Store Connect upload workflow
Overall this is a carefully hardened workflow: pinned SHAs, checksummed FVM binary instead of the mutable installer script, environment-gated secrets, profile-type validation, post-build signature/metadata verification, and artifact preservation before upload. The Rust pins (1.95.0 / 1.85.1) match
1. Nothing wires the imported certificate/profile into the build — the archive step will likely fail (correctness, high)
If you have already run this workflow end-to-end successfully, disregard. Otherwise the usual fix is to commit an 2.
|
c9a95e6 to
8f0d9d7
Compare
macos-15arm64 runner with Xcode 26.3 and the iOS 26 SDK.bdk_dartand the pinned replacement for Cargokit's floatingstabletoolchain.make ios-release BUILD_NUMBER=<number>as the canonical local entry point for the signed IPA build.Security boundary
GitHub only builds, signs, and uploads a build with a dedicated
DeveloperAPI key. TestFlight group assignment, App Store version selection, review submission, and production release remain manual actions in App Store Connect, so the exact binary tested through TestFlight can later be selected for production without rebuilding it.All external actions are pinned to immutable commit SHAs. FVM is downloaded at a pinned version and checked against a committed SHA-256. The workflow validates that the provisioning profile belongs to
com.bullbitcoin.appand rejects development, ad hoc, and enterprise profiles.Create a protected GitHub environment named
app-store-connect-uploadwith required reviewers, prevent self-review, and restrict its deployment branches before adding these environment secrets:APP_STORE_CONNECT_API_KEY_IDAPP_STORE_CONNECT_ISSUER_IDAPP_STORE_CONNECT_API_PRIVATE_KEYIOS_DISTRIBUTION_CERTIFICATE_BASE64IOS_DISTRIBUTION_CERTIFICATE_PASSWORDIOS_APP_STORE_PROVISIONING_PROFILE_BASE64