Налаштування автоматичного розповсюдження білдів через TestFlight

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Налаштування автоматичного розповсюдження білдів через TestFlight
Середній
від 1 дня до 3 днів
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Настройка автоматичної раздачі білдів через TestFlight

Ручна загрузка через Xcode Organizer—джерело біля в будь-якій iOS-команді. Забутий флаг include bitcode, застарілий сертифікат, що лежить тільки на MacBook одного розробника, Upload Error 409 без пояснення—все це зупиняє доставку білда тестувальникам на кілька годин. Автоматична загрузка в TestFlight через altool або Fastlane прибирає людину з цієї цепочки.

Проблема з сертифікатами у CI

Головний технічний бар'єр—Code Signing. У Xcode Organizer це відбувається «само», тому що Xcode бере сертифікат та provisioning profile зі зв'язки ключів macOS. У CI такої зв'язки немає. Без настройки отримуємо:

error: exportArchive: No signing certificate "iOS Distribution" found

Варіантів два: match від Fastlane (рекомендується для команд) або sigh + cert (для одиночного проекту). match зберігає сертифікати та профіли в зашифрованому Git-репозиторії, CI клонує його перед сборкою та імпортує в тимчасову keychain. Не потрібно пробрасувати файли вручну.

Як влаштована автоматична загрузка

altool (застарілий, але все ще робочий) та xcrun altool --upload-app вимагають App Store Connect API Key. Зараз Apple рекомендує xcrun notarytool для macOS та altool для iOS, але насправді, Fastlane pilot (deliver для метаданих) надійніше—обробляє помилки та ретраї.

Типовий Fastfile для TestFlight:

platform :ios do
  lane :beta do
    setup_ci  # настроює тимчасову keychain у CI

    match(
      type: "appstore",
      readonly: true,
      git_url: ENV["MATCH_GIT_URL"],
      password: ENV["MATCH_PASSWORD"]
    )

    increment_build_number(
      build_number: ENV["CI_BUILD_NUMBER"] || Time.now.to_i.to_s
    )

    build_app(
      scheme: "MyApp",
      configuration: "Release",
      export_method: "app-store"
    )

    upload_to_testflight(
      api_key_path: "fastlane/api_key.json",
      skip_waiting_for_build_processing: true,
      changelog: ENV["CHANGELOG"] || "Automated build"
    )
  end
end

skip_waiting_for_build_processing: true важливий—без нього Fastlane блокується на 10–20 хвилин, пока Apple обробляє білд. У CI це займає слот агента впустую.

App Store Connect API Key

Apple видалила підтримку логіну за паролем (App-Specific Password) для altool в кінці 2023 року. Тепер обов'язково API Key. Створюється в App Store Connect → Users and Access → Integrations. Потрібна роль не нижче App Manager. Ключ (AuthKey_XXXXXX.p8) зберігається в секретах CI, шлях до нього передається через api_key_path або через змінні оточення APP_STORE_CONNECT_API_KEY_KEY_ID, APP_STORE_CONNECT_API_KEY_ISSUER_ID, APP_STORE_CONNECT_API_KEY_KEY.

Групи тестувальників у TestFlight додаються автоматично: groups: ["Internal Testers", "QA Team"] у upload_to_testflight. Зовнішні тестувальники вимагають прохідження бета-ревью—це вже обмеження Apple, не автоматизуване.

Інкремент Build Number

TestFlight відхиляє білд з тим же CFBundleVersion, що вже завантажений. Стандартний підхід—використовувати номер сборки з CI: CI_BUILD_NUMBER у GitHub Actions, $CI_PIPELINE_IID у GitLab, $BITRISE_BUILD_NUMBER у Bitrise. Або git rev-list --count HEAD як монотонно зростаюче число.

Процес

Настройка App Store Connect API Key → конфігурація match для CI → написання Fastfile → тестування на реальному CI-агенті з macOS → настройка груп тестувальників → документація.

Срок: 1–3 дні в залежності від того, настроєн ли match вже або потрібно будувати з нуля. Стоимость рассчитывается индивидуально.