Some checks failed
CI / TypeScript (pull_request) Failing after 4s
CI / ESLint (pull_request) Failing after 4s
CI / Tests (pull_request) Failing after 12s
CI / Build Check (pull_request) Has been skipped
CI / Admin Web Tests (pull_request) Successful in 2m7s
CI / Deploy Edge Functions (pull_request) Has been skipped
2.8 KiB
2.8 KiB
App Store Submission
Prerequisites
Before triggering the CI pipeline, you need:
- Apple Developer Program membership (paid, $99/year)
- App Store Connect access with Admin or App Manager role
Step 1: Create App Store Connect API Key
- Go to App Store Connect → Users and Access → Integrations → App Store Connect API
- Click Generate API Key (or "+" button)
- Name it:
GitHub Actions CI - Set access to: App Manager (required for auto-signing + upload)
- Download the
.p8file immediately (you cannot re-download it later) - Note the Key ID and Issuer ID displayed on the page
Step 2: Add GitHub Secrets
Go to your GitHub repo → Settings → Secrets and variables → Actions → New repository secret.
| Secret Name | Value |
|---|---|
APP_STORE_CONNECT_KEY_ID |
The Key ID from Step 1 (e.g., ABC123XYZ) |
APP_STORE_CONNECT_ISSUER_ID |
The Issuer ID from Step 1 (UUID format) |
APP_STORE_CONNECT_API_KEY_P8 |
The entire contents of the .p8 file, including -----BEGIN PRIVATE KEY----- and -----END PRIVATE KEY----- lines |
Step 3: Trigger the Submission
Push a version tag to the repository:
git tag v1.0.0
git push origin v1.0.0
Or run manually:
- Go to Actions tab → App Store Submission → Run workflow
What Happens
- GitHub Actions runner (macOS) checks out your code
- Archives the app with Xcode auto-signing
- Exports an App Store IPA
- Uploads to App Store Connect
- The first upload automatically creates the app record in App Store Connect (bundle ID:
com.tabatago.app)
After Upload
- Go to App Store Connect → Apps
- Select TabataGo
- Complete the App Information (description, screenshots, keywords, etc.)
- Complete the Pricing and Availability section
- Go to the new build under TestFlight or App Store tab
- Submit for review
Troubleshooting
| 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 |
| "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 |
Build Number Increments
Each submission requires a unique build number. Edit tabatago-swift/project.yml:
- Change
CFBundleVersion: "2"→"3"in all three targets (TabataGo, TabataGoWatch, TabataGoWatchWidget) - Then regenerate the project:
cd tabatago-swift && xcodegen