Автоматична доставка білдів у TestFlight через CI/CD

Ми автоматизуємо доставку білдів у TestFlight, заощаджуючи до 80% часу вашої команди. Вартість налаштування починається від $500. Ручне завантаження через Xcode Organizer — джерело болю в будь-якій iOS-команді. Забутий флаг `include bitcode`, застарілий сертифікат, який лежить тільки на MacBook одно

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Автоматична доставка білдів у TestFlight через CI/CD
Середній
від 1 дня до 3 днів

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

Часті запитання

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Ми автоматизуємо доставку білдів у TestFlight, заощаджуючи до 80% часу вашої команди. Вартість налаштування починається від $500. Ручне завантаження через Xcode Organizer — джерело болю в будь-якій iOS-команді. Забутий флаг include bitcode, застарілий сертифікат, який лежить тільки на MacBook одного розробника, Upload Error 409 без зрозумілого пояснення — все це зупиняє доставку білда тестувальникам. У підсумку команда втрачає до 5 годин на тиждень на рутинних операціях, при цьому кожен десятий білд доводиться перезаливати через помилки. Автоматичне завантаження в TestFlight через Fastlane прибирає людину з цього ланцюжка. З нашим рішенням ви отримуєте передбачуваний процес та економію до 80% часу, що при ставці $50/год складає $2000 на місяць для команди з 5 розробників. Налаштування окупається за кілька тижнів навіть для невеликої команди. Автоматизація в 10 разів прискорює доставку білдів.

Як вирішити проблему з сертифікатами в 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. Не потрібно пробрасувати файли вручну. За нашим досвідом, match у 10 разів надійніше ручного копіювання. Code signing iOS забезпечується Fastlane match. Понад 100 проектів вже автоматизовано.

Чому Fastlane — найкращий вибір для TestFlight

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

Типовий 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. Тепер обов'язково 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. Докладніше див. Apple Developer Documentation.

Групи тестувальників у 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 як монотонно зростаюче число.

Спосіб Приклад Монотонність CI-залежність?
git rev-list --count 1234 висока ні
CI_BUILD_NUMBER 12345 середня (скидається при новому проекті) так
дата-штамп YYYYMMDD-N низька (може бути неунікальним) ні

Які проблеми вирішує автоматизація?

Проблема Ручне завантаження Автоматизація
сертифікати один розробник носить із собою зберігаються в зашифрованому репозиторії
завантаження білда 10–20 хвилин у Xcode 2–3 хвилини через CI
помилки 409, незрозумілі коди логи та автоматичні ретраї
тестувальники запрошувати вручну авто-додавання через групи

Що входить у роботу

  • Налаштування App Store Connect API Key та його інтеграція в CI.
  • Конфігурація Fastlane match для безпечного зберігання сертифікатів.
  • Написання Fastfile для пайплайну збірки та завантаження.
  • Тестування на вашому CI-агенті (macOS).
  • Документація щодо процесу для команди.
  • Навчання розробників роботі з автоматизацією.
Типові помилки при налаштуванні - Використання застарілого altool замість Fastlane: пропускає помилки. - Неправильний api_key_path: вказуйте абсолютний шлях у CI. - Забута роль App Manager: ключ не зможе завантажувати білди. - Блокування CI при очікуванні обробки: ставте `skip_waiting_for_build_processing: true`.

Процес

  1. Аналіз поточної CI-інфраструктури та сертифікатів.
  2. Налаштування App Store Connect API Key та секретів.
  3. Розгортання match-репозиторію.
  4. Написання Fastfile з обробкою помилок.
  5. Пробний запуск на CI-агенті.
  6. Документування та передача знань.

Строки та вартість

Строк: 1–3 дні залежно від того, чи налаштований match вже або потрібно будувати з нуля. Вартість розраховується індивідуально, пишіть — оцінимо ваш проект. Гарантія якості на всі роботи. 99% білдів завантажуються з першої спроби.

Наша команда має більш ніж 5-річний досвід у iOS-розробці та CI/CD: реалізовано понад 100 проектів з автоматичною доставкою білдів. iOS збірка CI через Fastlane – наша спеціалізація. Кожен налаштований пайплайн економить команді години на тиждень. Зв'яжіться з нами для консультації — оцінимо вашу інфраструктуру та запропонуємо оптимальне рішення. Замовте налаштування TestFlight автоматизації, щоб звільнити час розробників для більш важливих завдань.

Apple рекомендує використовувати App Store Connect API Key для автоматизації завантаження.