Files
tabatago/docs/app-store-submission.md
Millian Lamiaux cd6fea9b53
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
ci: add App Store submission pipeline via GitHub Actions
2026-05-21 10:47:48 +02:00

2.8 KiB

App Store Submission

Prerequisites

Before triggering the CI pipeline, you need:

  1. Apple Developer Program membership (paid, $99/year)
  2. App Store Connect access with Admin or App Manager role

Step 1: Create App Store Connect API Key

  1. Go to App Store Connect → Users and Access → Integrations → App Store Connect API
  2. Click Generate API Key (or "+" button)
  3. Name it: GitHub Actions CI
  4. Set access to: App Manager (required for auto-signing + upload)
  5. Download the .p8 file immediately (you cannot re-download it later)
  6. 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 SubmissionRun workflow

What Happens

  1. GitHub Actions runner (macOS) checks out your code
  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)

After Upload

  1. Go to App Store Connect → Apps
  2. Select TabataGo
  3. Complete the App Information (description, screenshots, keywords, etc.)
  4. Complete the Pricing and Availability section
  5. Go to the new build under TestFlight or App Store tab
  6. 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