2. Что у нас было?
• Несколько разрабатываемых проектов
• Redmine
• Много головной боли при ручном выпуске
приложений на Fabric или Store
• Желание все это автоматизировать :)
5. Кратко о Fastlane
В проект добавляются следующие файлы:
• Fastfile - содержит инструкции по сборке
• Appfile - содержит все необходимые данные для
взаимодействия iTC (login, bundle id, etc.)
14. Проекты на Jenkins
• Beta - загружает на Fabric
• RC - загружает на TestFlight
• Release - отправляет проверенный билд в AppStore
Для каждого приложения было создано по 3 проекта на Jenkins,
сборка которых запускается по webhook’ам
17. Telegram bots
• Публикация в канале компании информации о каждом
релизе.
• Удобное взаимодействие с тестировщиками
• Формирование текстов release notes на основе задач
в Redmine
19. Telegram bot
После выпуска версии в TestFlight в канал тестирования постится «блок
тестирования», содержащий в себе release notes, а также кнопки
управления:
• Начать тестирование (для тестировщиков)
• Багов не найдено (для тестировщиков)
• Найден баг (для тестировщиков)
• Отправить на доработку (для разработчика)
• Опубликовать версию в магазине (для разработчика)
Также создается задача в Redmine, назначенная на отдел тестирования.
22. Как мы выпускаем приложение?
На сервере мы храним файл, содержащий в себе весь
список версий каждого приложения в json формате:
В начале каждого lane мы считываем текущую
версию, сохраняем в локальную переменную и
поднимаем номер билда или версии. После успешного
выполнения lane версия сохраняется в файл.
23. Как мы выпускаем приложение?
Fabric
lane :beta
• Генерация release notes на основе выполненных задач на redmine.
• Сборка проекта с указанием схемы
• Использования стандартного action crashlytics()
25. Как мы выпускаем приложение?
TestFlight
lane :rc
• Генерация release notes на основе закрытых задач на
Redmine.
• Сборка проекта с указанием схемы
• Отправка билда на внутреннее тестирование с помощью
«pilot»
• Отправка билда на Review
• Отправка билда на внешнее тестирование с помощью
«pilot»
27. Как мы выпускаем приложение?
AppStore
Загрузка бета версии приложения на Fabric и RC версии
на TestFlight контролируются при помощи git push в
ветки beta и master.
Как тогда происходит отправка проверенной версии в
AppStore?
28. Как мы выпускаем приложение?
AppStore
Выпуск версии в магазин происходит по нажатию кнопки в блоке
тестирования в телеграмме:
• По нажатию на кнопку выпуска приложения дергается webhook, по
которому запускается Release версия проекта на Jenkins. В этом случае
вызывается fastlane release
Выполнение этого лейна зависит от state приложения на iTunesConnect:
• Pending Developer Release - меняем state на ReadyForSale
• Waiting For Review - ставим флаг automatic_release = true
• Rejected - требуется вмешательство разработчика
29. Как мы выпускаем приложение?
AppStore
Сервер раз в полчаса проверяет выделенный ящик
корпоративную почту на наличие письма от Apple о
прохождении Review.
• Rejected - телеграм бот пишет в dev группу
• Accepted - телеграм бот постит в канал сообщение о
доступности версии
30. Как добавить Fastlane в новый
проект?
Fastlane позволяет использовать gem dotenv. Что нам
это дает:
• Все уникальные для проекта данные вынести в файлы
.env.*
• Содержать один единственный Fastfile для всех
проектов