SlideShare a Scribd company logo
1 of 31
Download to read offline
CI/CD
with Fastlane and Telegram
Веселовский Сергей, iOS-разработчик, GradoService
Что у нас было?
• Несколько разрабатываемых проектов

• Redmine 

• Много головной боли при ручном выпуске
приложений на Fabric или Store

• Желание все это автоматизировать :)
CI/CD with Fastlane and Telegram
CI/CD with Fastlane and Telegram
Кратко о Fastlane
В проект добавляются следующие файлы:

• Fastfile - содержит инструкции по сборке

• Appfile - содержит все необходимые данные для
взаимодействия iTC (login, bundle id, etc.)
Кратко о Fastlane
Кратко о Fastlane
• gym - сборка вашего приложения

• pilot - отправка сборки на TestFlight

• deliver - загрузка метаданных и вашего приложения в
iTunesConnect

• snapshot + frameit - автоматическое создание
локализованных скриншотов

• Fastlane Plugins
Кратко о Fastlane.
Beta Deployment
• Crashlytics

• HockeyApp

• TestFairy

• TestFlight
Кратко о Fastlane.
Beta Deployment
Кратко о Fastlane.
Release Deployment
Загрузка версии и метаданных производится с
помощью fastlane action deliver:
CI/CD with Fastlane and Telegram
CI/CD with Fastlane and Telegram
Git
master
hotfix in RC
beta
dev
v 1.0(0)
v 1.0(1)
v 1.1(0) v 1.1(1)
feature1
Проекты на Jenkins
• Beta - загружает на Fabric

• RC - загружает на TestFlight

• Release - отправляет проверенный билд в AppStore
Для каждого приложения было создано по 3 проекта на Jenkins,
сборка которых запускается по webhook’ам
CI/CD with Fastlane and Telegram
CI/CD with Fastlane and Telegram
Telegram bots
• Публикация в канале компании информации о каждом
релизе.

• Удобное взаимодействие с тестировщиками

• Формирование текстов release notes на основе задач
в Redmine
Telegram bot
• После каждого релиза версии бот постит новость в
канал компании
Telegram bot
После выпуска версии в TestFlight в канал тестирования постится «блок
тестирования», содержащий в себе release notes, а также кнопки
управления:

• Начать тестирование (для тестировщиков)

• Багов не найдено (для тестировщиков)

• Найден баг (для тестировщиков)

• Отправить на доработку (для разработчика)

• Опубликовать версию в магазине (для разработчика)

Также создается задача в Redmine, назначенная на отдел тестирования.
Telegram bot
CI/CD with Fastlane and Telegram
Как мы выпускаем приложение?
На сервере мы храним файл, содержащий в себе весь
список версий каждого приложения в json формате:



В начале каждого lane мы считываем текущую
версию, сохраняем в локальную переменную и
поднимаем номер билда или версии. После успешного
выполнения lane версия сохраняется в файл.
Как мы выпускаем приложение?
Fabric
lane :beta

• Генерация release notes на основе выполненных задач на redmine.

• Сборка проекта с указанием схемы

• Использования стандартного action crashlytics()
Как мы выпускаем приложение?
Fabric
Как мы выпускаем приложение?
TestFlight
lane :rc

• Генерация release notes на основе закрытых задач на
Redmine.

• Сборка проекта с указанием схемы

• Отправка билда на внутреннее тестирование с помощью
«pilot»

• Отправка билда на Review

• Отправка билда на внешнее тестирование с помощью
«pilot»
Как мы выпускаем приложение?
Fabric
Как мы выпускаем приложение?
AppStore
Загрузка бета версии приложения на Fabric и RC версии
на TestFlight контролируются при помощи git push в
ветки beta и master. 

Как тогда происходит отправка проверенной версии в
AppStore?
Как мы выпускаем приложение?
AppStore
Выпуск версии в магазин происходит по нажатию кнопки в блоке
тестирования в телеграмме:

• По нажатию на кнопку выпуска приложения дергается webhook, по
которому запускается Release версия проекта на Jenkins. В этом случае
вызывается fastlane release

Выполнение этого лейна зависит от state приложения на iTunesConnect:

• Pending Developer Release - меняем state на ReadyForSale

• Waiting For Review - ставим флаг automatic_release = true

• Rejected - требуется вмешательство разработчика



Как мы выпускаем приложение?
AppStore
Сервер раз в полчаса проверяет выделенный ящик
корпоративную почту на наличие письма от Apple о
прохождении Review. 

• Rejected - телеграм бот пишет в dev группу

• Accepted - телеграм бот постит в канал сообщение о
доступности версии
Как добавить Fastlane в новый
проект?
Fastlane позволяет использовать gem dotenv. Что нам
это дает: 

• Все уникальные для проекта данные вынести в файлы
.env.*
• Содержать один единственный Fastfile для всех
проектов
Благодарю за
внимание!
• Контакты:

VK: https://vk.com/id85328052

Telegram: @sveselovskiy

More Related Content

What's hot

"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25MoscowJS
 
Docker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationDocker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationCOMAQA.BY
 
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)Ontico
 
Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)Alexander Babich
 
Winium — это как Selenium, только под Windows
Winium — это как Selenium, только под WindowsWinium — это как Selenium, только под Windows
Winium — это как Selenium, только под WindowsSQALab
 
Codeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCodeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCOMAQA.BY
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspbGonchik Tsymzhitov
 
Highway to Сontinuous Integration, Денис Трифонов (2GIS)
Highway to Сontinuous Integration, Денис Трифонов (2GIS)Highway to Сontinuous Integration, Денис Трифонов (2GIS)
Highway to Сontinuous Integration, Денис Трифонов (2GIS)Ontico
 
Кирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовКирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовOlesya_V
 
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...MoscowJS
 
Илья Кудинов
Илья КудиновИлья Кудинов
Илья КудиновCodeFest
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»WrikeTechClub
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerPositive Hack Days
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...it-people
 
Как за $5 и несколько вечеров сделать интегрированную новостную платформу
Как за $5 и несколько вечеров сделать интегрированную новостную платформуКак за $5 и несколько вечеров сделать интегрированную новостную платформу
Как за $5 и несколько вечеров сделать интегрированную новостную платформуAndrew Gubskiy
 
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesPositive Hack Days
 
Практика разработки веб-серверов на Rust
Практика разработки веб-серверов на RustПрактика разработки веб-серверов на Rust
Практика разработки веб-серверов на RustMichael Pankov
 
Николай Сивко "Хорошо поддерживаемое в продакшне приложение"
Николай Сивко "Хорошо поддерживаемое в продакшне приложение"Николай Сивко "Хорошо поддерживаемое в продакшне приложение"
Николай Сивко "Хорошо поддерживаемое в продакшне приложение"Tanya Denisyuk
 
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...Ontico
 

What's hot (20)

"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
 
Docker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationDocker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous Integration
 
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
 
Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)
 
Winium — это как Selenium, только под Windows
Winium — это как Selenium, только под WindowsWinium — это как Selenium, только под Windows
Winium — это как Selenium, только под Windows
 
Codeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCodeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышло
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspb
 
Highway to Сontinuous Integration, Денис Трифонов (2GIS)
Highway to Сontinuous Integration, Денис Трифонов (2GIS)Highway to Сontinuous Integration, Денис Трифонов (2GIS)
Highway to Сontinuous Integration, Денис Трифонов (2GIS)
 
Кирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовКирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектов
 
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
 
Илья Кудинов
Илья КудиновИлья Кудинов
Илья Кудинов
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
 
Как за $5 и несколько вечеров сделать интегрированную новостную платформу
Как за $5 и несколько вечеров сделать интегрированную новостную платформуКак за $5 и несколько вечеров сделать интегрированную новостную платформу
Как за $5 и несколько вечеров сделать интегрированную новостную платформу
 
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
 
Практика разработки веб-серверов на Rust
Практика разработки веб-серверов на RustПрактика разработки веб-серверов на Rust
Практика разработки веб-серверов на Rust
 
Николай Сивко "Хорошо поддерживаемое в продакшне приложение"
Николай Сивко "Хорошо поддерживаемое в продакшне приложение"Николай Сивко "Хорошо поддерживаемое в продакшне приложение"
Николай Сивко "Хорошо поддерживаемое в продакшне приложение"
 
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...
 
Telegram Bot
Telegram BotTelegram Bot
Telegram Bot
 

Similar to CI/CD with Fastlane and Telegram

Пайплайны и инфраструктура разработки на Unreal Engine 4 / Максим Равицкий (S...
Пайплайны и инфраструктура разработки на Unreal Engine 4 / Максим Равицкий (S...Пайплайны и инфраструктура разработки на Unreal Engine 4 / Максим Равицкий (S...
Пайплайны и инфраструктура разработки на Unreal Engine 4 / Максим Равицкий (S...DevGAMM Conference
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
Drupal code sprint для новичков
Drupal code sprint для новичковDrupal code sprint для новичков
Drupal code sprint для новичковOvadiah Myrgorod
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораSQALab
 
отладка Mpi приложений
отладка Mpi приложенийотладка Mpi приложений
отладка Mpi приложенийMichael Karpov
 
презентация Адеев Николай, Artsofte для Tеlecom&Clouds 2014
презентация Адеев Николай, Artsofte для Tеlecom&Clouds 2014презентация Адеев Николай, Artsofte для Tеlecom&Clouds 2014
презентация Адеев Николай, Artsofte для Tеlecom&Clouds 2014Artsofte IT company
 
управление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийуправление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийSergii Shmarkatiuk
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON
 
Мой Python всегда со мной!
Мой Python всегда со мной!Мой Python всегда со мной!
Мой Python всегда со мной!PyNSK
 
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...Positive Hack Days
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)guest40e031
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Serversrit2010
 
Программируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco NexusПрограммируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco NexusCisco Russia
 
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITYCONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITYPavel Tsukanov
 
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...SQALab
 
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeYehor Herasymchuk
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 

Similar to CI/CD with Fastlane and Telegram (20)

Пайплайны и инфраструктура разработки на Unreal Engine 4 / Максим Равицкий (S...
Пайплайны и инфраструктура разработки на Unreal Engine 4 / Максим Равицкий (S...Пайплайны и инфраструктура разработки на Unreal Engine 4 / Максим Равицкий (S...
Пайплайны и инфраструктура разработки на Unreal Engine 4 / Максим Равицкий (S...
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Drupal code sprint для новичков
Drupal code sprint для новичковDrupal code sprint для новичков
Drupal code sprint для новичков
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатора
 
отладка Mpi приложений
отладка Mpi приложенийотладка Mpi приложений
отладка Mpi приложений
 
презентация Адеев Николай, Artsofte для Tеlecom&Clouds 2014
презентация Адеев Николай, Artsofte для Tеlecom&Clouds 2014презентация Адеев Николай, Artsofte для Tеlecom&Clouds 2014
презентация Адеев Николай, Artsofte для Tеlecom&Clouds 2014
 
управление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийуправление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложений
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
 
Мой Python всегда со мной!
Мой Python всегда со мной!Мой Python всегда со мной!
Мой Python всегда со мной!
 
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Servers
 
Программируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco NexusПрограммируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco Nexus
 
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITYCONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
 
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
 
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And Forge
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 

CI/CD with Fastlane and Telegram

  • 1. CI/CD with Fastlane and Telegram Веселовский Сергей, iOS-разработчик, GradoService
  • 2. Что у нас было? • Несколько разрабатываемых проектов • Redmine • Много головной боли при ручном выпуске приложений на Fabric или Store • Желание все это автоматизировать :)
  • 5. Кратко о Fastlane В проект добавляются следующие файлы:
 • Fastfile - содержит инструкции по сборке • Appfile - содержит все необходимые данные для взаимодействия iTC (login, bundle id, etc.)
  • 7. Кратко о Fastlane • gym - сборка вашего приложения • pilot - отправка сборки на TestFlight • deliver - загрузка метаданных и вашего приложения в iTunesConnect • snapshot + frameit - автоматическое создание локализованных скриншотов • Fastlane Plugins
  • 8. Кратко о Fastlane. Beta Deployment • Crashlytics • HockeyApp • TestFairy • TestFlight
  • 10. Кратко о Fastlane. Release Deployment Загрузка версии и метаданных производится с помощью fastlane action deliver:
  • 13. Git master hotfix in RC beta dev v 1.0(0) v 1.0(1) v 1.1(0) v 1.1(1) feature1
  • 14. Проекты на Jenkins • Beta - загружает на Fabric • RC - загружает на TestFlight • Release - отправляет проверенный билд в AppStore Для каждого приложения было создано по 3 проекта на Jenkins, сборка которых запускается по webhook’ам
  • 17. Telegram bots • Публикация в канале компании информации о каждом релизе. • Удобное взаимодействие с тестировщиками • Формирование текстов release notes на основе задач в Redmine
  • 18. Telegram bot • После каждого релиза версии бот постит новость в канал компании
  • 19. Telegram bot После выпуска версии в TestFlight в канал тестирования постится «блок тестирования», содержащий в себе release notes, а также кнопки управления: • Начать тестирование (для тестировщиков) • Багов не найдено (для тестировщиков) • Найден баг (для тестировщиков) • Отправить на доработку (для разработчика) • Опубликовать версию в магазине (для разработчика) Также создается задача в Redmine, назначенная на отдел тестирования.
  • 22. Как мы выпускаем приложение? На сервере мы храним файл, содержащий в себе весь список версий каждого приложения в json формате:
 
 В начале каждого lane мы считываем текущую версию, сохраняем в локальную переменную и поднимаем номер билда или версии. После успешного выполнения lane версия сохраняется в файл.
  • 23. Как мы выпускаем приложение? Fabric lane :beta • Генерация release notes на основе выполненных задач на redmine. • Сборка проекта с указанием схемы • Использования стандартного action crashlytics()
  • 24. Как мы выпускаем приложение? Fabric
  • 25. Как мы выпускаем приложение? TestFlight lane :rc • Генерация release notes на основе закрытых задач на Redmine. • Сборка проекта с указанием схемы • Отправка билда на внутреннее тестирование с помощью «pilot» • Отправка билда на Review • Отправка билда на внешнее тестирование с помощью «pilot»
  • 26. Как мы выпускаем приложение? Fabric
  • 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 для всех проектов
  • 31. Благодарю за внимание! • Контакты:
 VK: https://vk.com/id85328052
 Telegram: @sveselovskiy