workflows: # ───────────────────────────────────────────── # iOS – App Store / TestFlight # ───────────────────────────────────────────── ios-workflow: name: iOS Production Build max_build_duration: 120 instance_type: mac_mini_m2 integrations: app_store_connect: Apple environment: ios_signing: distribution_type: app_store bundle_identifier: com.dashboarr.app node: 20 xcode: 26.4 cocoapods: 1.16.2 vars: EAS_UPDATE_CHANNEL: production triggering: events: - push - tag branch_patterns: - pattern: main include: true source: true tag_patterns: - pattern: 'v*' include: true scripts: - name: Install dependencies script: | corepack enable corepack prepare pnpm@9.15.4 --activate pnpm install --frozen-lockfile --prod=false - name: Expo prebuild (generate native ios/ project) script: | pnpm exec expo prebuild --platform ios --clean --no-install - name: Install CocoaPods script: | cd ios pod install - name: Set iOS version from package.json script: | APP_VERSION=$(node -p "require('./package.json').version") BUILD_NUMBER=$(node -p "const [ma,mi,pa]=require('./package.json').version.split('.').map(Number); ma*10000+mi*100+pa") cd ios agvtool new-marketing-version "$APP_VERSION" agvtool new-version -all "$BUILD_NUMBER" - name: Apply provisioning profiles script: | cd ios xcode-project use-profiles test -f /Users/builder/export_options.plist || (echo "Missing /Users/builder/export_options.plist after use-profiles" && exit 1) - name: Build iOS (archive) script: | cd ios xcode-project build-ipa \ --workspace Dashboarr.xcworkspace \ --scheme Dashboarr \ --archive-flags="-destination 'generic/platform=iOS'" artifacts: - ios/build/ios/ipa/*.ipa - /tmp/xcodebuild_logs/*.log - ios/*.xcresult publishing: email: recipients: - renzobeux@gmail.com notify: success: true failure: true app_store_connect: auth: integration submit_to_testflight: true expire_build_submitted_for_review: true