Непрерывная доставка бета-версий iOS

Нажимайте, создавайте и доставляйте — автоматизировано с помощью Travis CI

На протяжении многих лет мы создавали для наших клиентов множество красиво оформленных iOS-приложений.

Чтобы все работали в тесном контакте, мы ежедневно отправляем сборки нашей группе контроля качества, бета-пользователям, клиентам и другим членам команды. Тем не менее, создание iOS по-прежнему болезненно для менеджера проекта — это включает в себя компиляцию, загрузку приложения в TestFlight или HockeyApp, настройку Crittercism для сбора отчетов о сбоях (те, у кого есть опыт, должны знать, что вы необходимо загружать файлы dSym для символических отладочных сообщений), уведомлять всех в Slack и т. д.

Гораздо лучше, если мы сможем автоматизировать все это с каждым запросом на извлечение.

Обзор

Наши инженеры придумали повторно используемый скрипт iOS для Travis CI, чтобы облегчить нашу боль.

Проверьте скрипт на https://github.com/oursky/travis-ios-script

CI (непрерывная интеграция) — это восхитительно

CI порадовал нас (и других разработчиков со всего мира) тем, что смог:

  • Автоматизируйте процесс модульного тестирования
  • Стандартные настройки сборки
  • Поддерживать репозиторий кода
  • Стройте быстро
  • Поддержка нескольких целей сборки

Однако всякий раз, когда мы инициируем проект, нашим инженерам приходится тратить некоторое время (и это немало) на настройку конфигураций для CI, включая работу с профилями iOS Provisioning, настройками сборки, зависимостями и т. д.

Потратив время на настройку нескольких приложений для iOS,

"Мы повторяемся?" — закричал голос изнутри.

Мы также заметили, что узким местом для выпуска сборки является процесс «Разработчик → Контроль качества».

В устаревшее время после доставки бета-версии PM должен:

  1. Попросите разработчика отправить код в бета-ветку
  2. Вытяните код из бета-ветки
  3. Исправить сертификат и зависимости
  4. Создайте приложение
  5. Загрузить в приложение Testflight/Hockey
  6. Обновить файл dSym на Crittercism
  7. Сообщите QA Tester/клиенту, что сборка доступна

Опираясь на Travis CI, мы частично спасли жизнь PM, автоматизировав процесс сборки и настройки среды. Хорошо построенная (и протестированная) сборка проекта теперь готова к доставке.

Почему бы нам не автоматизировать этап доставки?

Помимо автостроительства

Автоматизация процесса доставки

Наши инженеры подготовили многоразовый скрипт, который в основном помогает инициировать настройки Travis CI для каждого проекта iOS. При правильных настройках и действительных ключах API результат, созданный на основе Travis CI, затем будет доставлен на другие платформы распространения приложений.

Разработчикам нужно только поместить необходимые сертификаты, профили обеспечения и ключи API в соответствующие каталоги. Затем заполните поля для настроек проекта в travis.yml.

Репозиторий также включает сценарии, позволяющие подписывать и загружать файлы. Код проекта будет скомпилирован при отправке в ветки, затем загружен в Testflight/HockeyApp, а файлы dSym также попадут в Crittercism.

Теперь последняя сборка будет собрана и доставлена ​​автоматически и
доступна для бета-тестирования через минуту.

О, у нас даже есть результат сборки, отправленный в Slack. Таким образом, другие члены команды в канале могли отслеживать прогресс.

Жизнь становится лучше

Требуемое время для настройки Travis CI: 1 день (до) → 30 минут (после)

Этапы доставки сборки: отправка, получение, исправление зависимостей, сборка, загрузка в разные места, доставка (до) → отправка, доставка (после)

Бонус: иногда проект можно было построить на машине Боба, но не на машине Ады. Интеграция процесса CI также стандартизирует настройки сборки среди разработчиков (настройка CI является стандартом).

Ага! Сейчас это звучит очень здорово. Давайте выпьем кофе.

Настройки

Ознакомьтесь с репозиторием многоразового сценария iOS по адресу https://github.com/oursky/travis-ios-script. Вы также можете найти рекомендации по настройке вашего проекта в файле README проекта.

Если вы предпочитаете проект Travis CI для iOS и многое другое:

Мы хотим видеть больше автоматизированной интеграции, которая радует нашу жизнь. Запросы на вытягивание приветствуются.



Разрабатываете приложение? Наши бесплатные инструменты разработчика и серверная часть с открытым исходным кодом облегчат вашу работу.