ci: add iPhone deploy workflow + CI/CD setup docs #4
@@ -44,7 +44,7 @@ Or run manually:
|
||||
2. Archives the app with Xcode auto-signing
|
||||
3. Exports an App Store IPA
|
||||
4. Uploads to App Store Connect
|
||||
5. The first upload **automatically creates** the app record in App Store Connect (bundle ID: `com.tabatago.app`)
|
||||
5. The first upload **automatically creates** the app record in App Store Connect (bundle ID: `fr.millianlmx.tabatago`)
|
||||
|
||||
## After Upload
|
||||
|
||||
@@ -60,7 +60,7 @@ Or run manually:
|
||||
| Symptom | Likely Cause |
|
||||
|---|---|
|
||||
| "No accounts with iTunes Connect access" | API key doesn't have App Manager permissions — recreate the key with correct access |
|
||||
| "No profiles found" | The bundle ID `com.tabatago.app` isn't registered yet — check Apple Developer portal |
|
||||
| "No profiles found" | The bundle ID `fr.millianlmx.tabatago` isn't registered yet — check Apple Developer portal |
|
||||
| "Duplicate build number" | Build number already used — bump `CFBundleVersion` in `project.yml` and re-tag |
|
||||
| "Authentication failed" | API key was revoked, expired, or secret is misspelled — verify secrets in repository settings |
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ struct TabataEntry: TimelineEntry {
|
||||
|
||||
struct TabataProvider: TimelineProvider {
|
||||
|
||||
private let sharedDefaults = UserDefaults(suiteName: "group.com.tabatago.app")
|
||||
private let sharedDefaults = UserDefaults(suiteName: "group.fr.millianlmx.tabatago")
|
||||
|
||||
func placeholder(in context: Context) -> TabataEntry {
|
||||
TabataEntry(date: Date(), streak: 7, lastWorkoutLabel: "Today")
|
||||
|
||||
@@ -27,6 +27,6 @@
|
||||
<key>WKApplication</key>
|
||||
<true/>
|
||||
<key>WKCompanionAppBundleIdentifier</key>
|
||||
<string>com.tabatago.app</string>
|
||||
<string>fr.millianlmx.tabatago</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<true/>
|
||||
<key>com.apple.security.application-groups</key>
|
||||
<array>
|
||||
<string>group.com.tabatago.app</string>
|
||||
<string>group.fr.millianlmx.tabatago</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -13,7 +13,7 @@ struct WatchActivityView: View {
|
||||
@State private var isLoading = true
|
||||
|
||||
private let healthStore = HKHealthStore()
|
||||
private let sharedDefaults = UserDefaults(suiteName: "group.com.tabatago.app")
|
||||
private let sharedDefaults = UserDefaults(suiteName: "group.fr.millianlmx.tabatago")
|
||||
|
||||
var body: some View {
|
||||
ScrollView {
|
||||
|
||||
@@ -67,7 +67,7 @@ targets:
|
||||
com.apple.developer.healthkit.access:
|
||||
- health-records
|
||||
com.apple.security.application-groups:
|
||||
- group.com.tabatago.app
|
||||
- group.fr.millianlmx.tabatago
|
||||
dependencies:
|
||||
- package: Supabase
|
||||
product: Supabase
|
||||
@@ -78,7 +78,7 @@ targets:
|
||||
embed: true
|
||||
settings:
|
||||
base:
|
||||
PRODUCT_BUNDLE_IDENTIFIER: com.tabatago.app
|
||||
PRODUCT_BUNDLE_IDENTIFIER: fr.millianlmx.tabatago
|
||||
INFOPLIST_FILE: TabataGo/Resources/Info.plist
|
||||
CODE_SIGN_ENTITLEMENTS: TabataGo/Resources/TabataGo.entitlements
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
|
||||
@@ -112,7 +112,7 @@ targets:
|
||||
CFBundleShortVersionString: "1.0"
|
||||
CFBundleVersion: "2"
|
||||
WKApplication: true
|
||||
WKCompanionAppBundleIdentifier: com.tabatago.app
|
||||
WKCompanionAppBundleIdentifier: fr.millianlmx.tabatago
|
||||
NSHealthShareUsageDescription: "TabataGo reads your heart rate and calories during workouts."
|
||||
NSHealthUpdateUsageDescription: "TabataGo saves workout data to Apple Health directly from your Watch."
|
||||
entitlements:
|
||||
@@ -120,13 +120,13 @@ targets:
|
||||
properties:
|
||||
com.apple.developer.healthkit: true
|
||||
com.apple.security.application-groups:
|
||||
- group.com.tabatago.app
|
||||
- group.fr.millianlmx.tabatago
|
||||
dependencies:
|
||||
- target: TabataGoWatchWidget
|
||||
embed: true
|
||||
settings:
|
||||
base:
|
||||
PRODUCT_BUNDLE_IDENTIFIER: com.tabatago.app.watchkitapp
|
||||
PRODUCT_BUNDLE_IDENTIFIER: fr.millianlmx.tabatago.watchkitapp
|
||||
INFOPLIST_FILE: TabataGoWatch/Resources/Info.plist
|
||||
CODE_SIGN_ENTITLEMENTS: TabataGoWatch/Resources/TabataGoWatch.entitlements
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
|
||||
@@ -152,7 +152,7 @@ targets:
|
||||
NSExtensionPointIdentifier: com.apple.widgetkit-extension
|
||||
settings:
|
||||
base:
|
||||
PRODUCT_BUNDLE_IDENTIFIER: com.tabatago.app.watchkitapp.widget
|
||||
PRODUCT_BUNDLE_IDENTIFIER: fr.millianlmx.tabatago.watchkitapp.widget
|
||||
TARGETED_DEVICE_FAMILY: "4"
|
||||
WATCHOS_DEPLOYMENT_TARGET: "11.0"
|
||||
|
||||
@@ -166,7 +166,7 @@ targets:
|
||||
- target: TabataGo
|
||||
settings:
|
||||
base:
|
||||
PRODUCT_BUNDLE_IDENTIFIER: com.tabatago.app.tests
|
||||
PRODUCT_BUNDLE_IDENTIFIER: fr.millianlmx.tabatago.tests
|
||||
|
||||
TabataGoUITests:
|
||||
type: bundle.ui-testing
|
||||
@@ -178,7 +178,7 @@ targets:
|
||||
- target: TabataGo
|
||||
settings:
|
||||
base:
|
||||
PRODUCT_BUNDLE_IDENTIFIER: com.tabatago.app.uitests
|
||||
PRODUCT_BUNDLE_IDENTIFIER: fr.millianlmx.tabatago.uitests
|
||||
|
||||
schemes:
|
||||
TabataGo:
|
||||
|
||||
Reference in New Issue
Block a user