Skip to main content
Status: built (STA-1623), waiting for the first live run. The real drivers are written against the documented API shapes and have not called Apple, Google, Expo, Sentry or Infisical yet. Decision: 0482.

The commands

Run at a product root. Three modes: Exit code 0: every step done or planned. 3: an owner step is pending or a step is blocked. 2: a usage error. Releasing is the existing build and deploy, with the mobile part alone:
Each build goes through the eas driver’s submit to TestFlight and the Play internal track. An Android build waits while Play has no release yet (the first upload is by hand) and the deploy prints held: with the reason; iOS still goes. The listing, screenshots, review details and App Review submission are ADR 0480’s store steps.

The steps

One-time setup (owner, for every product)

  1. Root kit (ADR 0480, STA-1591): ASC_API_KEY_ID, ASC_API_ISSUER_ID, ASC_API_PRIVATE_KEY, GOOGLE_PLAY_SERVICE_ACCOUNT_JSON, EXPO_TOKEN into Infisical prod:/ci/store through ~/Secrets-inbox and pnpm secrets:import.
  2. Google workload identity federation: in Figentra’s Google Cloud organisation, a workload identity pool and provider that trust GitHub OIDC from each product repository’s production environment, and a folder for product projects. Grant the pool’s principal Project Creator, Firebase Admin, Service Account Admin, Service Account Key Admin and Service Usage Admin on that folder. The job’s auth step exports the token as GOOGLE_OAUTH_ACCESS_TOKEN; the folder is the organisation variable GOOGLE_PROJECT_FOLDER (folders/<number>).
  3. Google Analytics: add the same principal as Editor on Figentra’s Analytics account.
  4. Sentry: SENTRY_AUTH_TOKEN in /ci with project:write, and a mobile team in the figentra organisation.
  5. Infisical: the job’s OIDC login exports INFISICAL_TOKEN; the identity may write under prod:/ci/store.

Owner steps per app

  • App Store Connect app record: Apps › + › New App with the platform, name, primary language, bundle id and SKU the step prints.
  • Play app and first upload: create the app with the name and default language the step prints; fill App content (privacy policy, app access with the review demo account, ads, content rating, target audience, Data safety from pnpm store build); upload the first production .aab from EAS to Internal testing; keep Play App Signing on; invite the root kit’s service account with release rights. The step is done once Play shows a release.

Academorix

The offline plan of academorix’s runway.yaml today (traced from the code, not run: this Mac runs no tests). Its ids are the live store ids, so identity keeps them. Before its first --check: set mobile.academorix.eas.owner: academorix (owner answer, STA-1623 Q4) and google.analyticsAccount, in the product’s go-live change.