Ci testflight fixes#1176
Conversation
Rename `APP_STORE_API_ISSUER_ID` to `APP_STORE_API_KEY_ISSUER_ID` in the BankSDK TestFlight workflow to match the actual repository secret name.
There was a problem hiding this comment.
Pull request overview
This PR updates the TestFlight publishing pipeline for the Bank SDK example app by switching from a file-based App Store Connect API key + altool upload flow to Fastlane’s upload_to_testflight with base64 key content, and by making the app’s build number configurable via CI.
Changes:
- Update
fastlane publish_to_testflightto useapp_store_connect_api_key+upload_to_testflightwithAPP_STORE_CONNECT_API_KEY(base64). - Set
CFBundleVersionto$(CURRENT_PROJECT_VERSION)and injectCURRENT_PROJECT_VERSION=${{ github.run_number }}during CI archive. - Adjust reusable TestFlight workflow signing-profile download and secret wiring.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
fastlane/Fastfile |
Switch TestFlight upload implementation to Fastlane API key + upload_to_testflight (and remove local key-file handling). |
BankSDK/GiniBankSDKExample/GiniBankSDKExample/Info.plist |
Make build number come from CURRENT_PROJECT_VERSION instead of a hardcoded value. |
.github/workflows/publish.example.app.testflight.yml |
Update CI steps to pass API key content directly and set CURRENT_PROJECT_VERSION during archive. |
.github/workflows/bank-sdk.publish.example.app.testflight.yml |
Update the caller workflow to pass secrets/inputs into the reusable TestFlight workflow. |
qnaveed87
left a comment
There was a problem hiding this comment.
@ValentinaIancu-Gini Thank you
Looks good to me
zladzeyka
left a comment
There was a problem hiding this comment.
Thanks @ValentinaIancu-Gini for fixing 🎉
Only polishing naming suggestion from my side
…orkflows Use consistent secret name APP_STORE_API_KEY_ISSUER_ID in both the reusable workflow contract and the caller, removing the unnecessary rename indirection.
- Add new workflow to upload GiniHealthSDKExample to TestFlight - Rename ExportOptionsHealthExample.plist to ExportOptionsAppStoreGiniHealthSDKExample.plist - Switch export method from ad-hoc to app-store-connect - Update provisioning profile to match AppStore profile
Replace references to APP_STORE_CONNECT_API_KEY_PATH with APP_STORE_CONNECT_API_KEY (base64-encoded .p8 content) in lane docs for build_and_upload_to_testflight and publish_to_testflight.
Add a check-schedule job to both BankSDK and HealthSDK TestFlight workflows to restrict cron-triggered runs to the second Monday of Feb, May, Aug, and Nov, replacing the previous quarterly first-of-month schedule.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.
Comments suppressed due to low confidence (1)
ExportOptionsAppStoreGiniHealthSDKExample.plist:6
exportOptionsPlist’smethodvalueapp-store-connectis not a validxcodebuild -exportArchiveexport method and will cause export to fail. For TestFlight/App Store Connect distribution, Xcode expectsmethodto beapp-store.
| run: | | ||
| DISTRIBUTION_TYPE=appstore bundle exec fastlane download_profiles | ||
| DISTRIBUTION_TYPE=adhoc APP_IDENTIFIER=${{ inputs.bundle_identifier }} bundle exec fastlane download_profiles | ||
|
|
There was a problem hiding this comment.
[Clarification]: @ValentinaIancu-Gini are we downloading somewhere a profile for our app extension?
|
zladzeyka
left a comment
There was a problem hiding this comment.
Thank you @ValentinaIancu-Gini
There was a problem hiding this comment.
[Suggestion]: I think we need to update also plist for Health SDK Example
| Upload an .ipa to TestFlight via the App Store Connect API. | ||
|
|
||
| Parameters: | ||
| ipa_path - Path to the .ipa file (default: "./GiniBankSDKExample.ipa") |
There was a problem hiding this comment.
[Suggestion]: modify the comment comment and mention that it might be ./GiniHealthSDKExample.ipa as well
| key_id = ENV['APP_STORE_CONNECT_API_KEY_ID'] | ||
| issuer_id = ENV['APP_STORE_CONNECT_API_ISSUER_ID'] | ||
| key_path = ENV['APP_STORE_CONNECT_API_KEY_PATH'] || "build_artifacts/AppStoreConnectAPIKey.p8" | ||
| ipa_path = options[:ipa_path] || "./GiniBankSDKExample.ipa" |
There was a problem hiding this comment.
[Suggestion]: add a comment comment and mention that it might be ./GiniHealthSDKExample.ipa as well
| description: 'Xcode version to use' | ||
| required: false | ||
| default: '16.3' | ||
| default: '26.2' |
There was a problem hiding this comment.
[Suggestion]: Can we use a dynamic value from config for Xcode version?
| run: bundle exec fastlane download_profiles | ||
| run: | | ||
| DISTRIBUTION_TYPE=appstore bundle exec fastlane download_profiles | ||
| DISTRIBUTION_TYPE=adhoc APP_IDENTIFIER=${{ inputs.bundle_identifier }} bundle exec fastlane download_profiles |
There was a problem hiding this comment.
[Clarification]: Do we still need to download adhoc?



Pull Request Description
This PR updates the TestFlight publishing pipeline for the Bank SDK example app by switching from a file-based App Store Connect API key +
altoolupload flow to Fastlane’supload_to_testflightwith base64 key content, and by making the app’s build number configurable via CI.Changes:
fastlane publish_to_testflightto useapp_store_connect_api_key+upload_to_testflightwithAPP_STORE_CONNECT_API_KEY(base64).CFBundleVersionto$(CURRENT_PROJECT_VERSION)and injectCURRENT_PROJECT_VERSION=${{ github.run_number }}during CI archive.