3.4 KiB
3.4 KiB
Releasing Omnigent iOS
Releases are built locally with fastlane. The beta
lane archives a signed Release build and uploads it to TestFlight; the release
lane uploads to App Store Connect (binary only — review submission is a
follow-up).
One-time setup
- Xcode 16+ with the command-line tools selected
(
xcode-select -pshould point at your Xcode). - Install fastlane (pinned via
Gemfile):cd web/ios bundle install - Create the app record in App Store Connect
for bundle ID
ai.omnigent.ios(My Apps → +), if it doesn't exist yet. - Generate an App Store Connect API key: Users and Access → Integrations →
App Store Connect API → generate a key with the App Manager role.
Download the
.p8(you can only download it once) and place it inios/fastlane/— it is git-ignored. - Configure env vars:
cp fastlane/.env.example fastlane/.env # edit fastlane/.env: set ASC_KEY_ID, ASC_ISSUER_ID, ASC_KEY_PATH.envis git-ignored and is loaded automatically by fastlane. The lanes also acceptAPPLE_API_KEY_ID,APPLE_API_ISSUER, andAPPLE_API_KEY(.p8file path) for compatibility with local shell exports.
Cutting a TestFlight build
cd web/ios
bundle exec fastlane beta
This bumps the build number to one past the latest on TestFlight, archives the
Release configuration (HTTPS-only, automatic signing under team 8RMX4WU6F8),
and uploads the .ipa. The build appears in App Store Connect → TestFlight after
Apple finishes processing.
Versioning
- Build number (
CFBundleVersion = $(CURRENT_PROJECT_VERSION)) is computed per upload aslatest_testflight_build_number + 1and injected at archive time via an xcodebuildCURRENT_PROJECT_VERSION=…override. Nothing in the repo is modified, so everybeta/releaseupload gets a unique, monotonic build number with no version churn in git. Don't bump it by hand. - Marketing version (
CFBundleShortVersionString, currently0.1.0) is set manually. BumpMARKETING_VERSIONfor both the Debug and Release configurations of the Omnigent target in Xcode (or viafastlane increment_version_number) when shipping a new user-facing version. - App icon is the shared Icon Composer source at
platform-assets/AppIcon.icon, which the iOS target includes directly for Liquid Glass app icon rendering.
App Store submission (later)
bundle exec fastlane prod
Prepares the App Store version without submitting for review. The lane reuses
the latest uploaded TestFlight build and uploads fastlane/metadata plus
fastlane/screenshots. Set
OMNIGENT_PROD_BUILD_NUMBER=4 to pin a specific processed build.
Other commands
bundle exec fastlane tests— run theOmnigentTestsunit suite.bundle exec fastlane screenshots— build and capture App Store screenshots intofastlane/screenshotsusing theOmnigentUITestssnapshot target. The lane rebuilds the web UI, starts an isolated local Omnigent server viauvon a non-6767 port, and connects the simulator to that server automatically.bundle exec fastlane release— upload a new binary to App Store Connect without submitting it for review. Preferprodafter a TestFlight build is already uploaded.bundle exec fastlane lanes— list available lanes.