Fastlane: iOS-автоматизация круиз-контроля
Опубликовано: 2022-03-11Создание программного обеспечения для iOS — это больше, чем просто написание кода на Objective-C или Swift: оно включает в себя знание того, как работает UIKit, как создаются сертификаты, как публиковать ваше приложение в магазине, как работать с обзорами приложений и многое другое. Если вы находите этот вечный список задач утомительным, некоторая автоматизация вашего рабочего процесса — это именно то, что вам нужно.
Встречайте Fastlane, инструмент, разработанный для того, чтобы сэкономить минуты или даже часы при каждом развертывании.
Fastlane помогает автоматизировать процесс отправки бета-версий в Crashlytics, TestFlight, App Store и многие другие.
В этой статье вы узнаете, как использовать Fastlane для автоматизации рабочего процесса развертывания приложений iOS. Хотя мы сосредоточимся на аспекте этого инструмента для iOS, Fastlane одинаково хорошо работает и для автоматизации разработки под Android.
Начало работы с Fastlane
Существует несколько способов установки, которые вы можете выбрать, в зависимости от того, какой из них вам кажется самым простым. Если у вас установлен и настроен Homebrew, для установки Fastlane достаточно одной команды:
brew cask install fastlane В противном случае, поскольку Fastlane является инструментом на основе Ruby, всегда можно использовать gem :
sudo gem install fastlane -NVИли вы всегда можете скачать Fastlane с официального сайта.
После того, как вы установили Fastlane, запустите fastlane init в каталоге вашего проекта и следуйте инструкциям.
Автоматизация развертывания
Установив Fastlane, вы теперь можете писать сценарии Ruby, чтобы шаг за шагом указывать, что вам нужно сделать, чтобы выполнить развертывание там, где вы хотите. Это делается с помощью действий, инструментов и дорожек.
Инструменты, действия и плагины Fastlane
Fastlane работает, имея в своей основе инструменты, которые помогут вам создать ваше приложение. Помимо инструментов сборки, имеется более 170 встроенных интеграций с такими сервисами, как Crashlytics, HockeyApp, TestFlight и другими плагинами, которые создают и публикуют третьи стороны, чтобы вы могли подключаться к другим сервисам и т. д.
По сути, вы получаете основные инструменты, которые позволяют вам выполнять различные задачи: от создания автоматических снимков экрана до их кадрирования и загрузки в магазин, он позволяет автоматически запускать все ваши тесты перед созданием приложения.
Действия — это основные инструменты, которые есть в Fastlane, а плагины — это способ добавить сторонние действия в вашу настройку Fastlane.
переулки
Fastlane использует полосы, которые последовательно группируют список действий или плагинов, чтобы вы могли каждый раз получать один и тот же результат.
При запуске дорожки каждое действие будет экспортировать переменную среды, а следующие действия автоматически получат эти переменные, чтобы процесс продолжался. Например, использование действия gym приведет к созданию пути к файлу .ipa , а использование crashlytics получит доступ к этому местоположению .ipa для загрузки этого файла в свою систему распространения бета-сервиса.
Использование Fastlane с iOS
Вы начинаете с нового клиента Toptal, которому нужно очень простое приложение. Дизайн уже готов, и через несколько недель приложение можно будет написать. Следующим шагом является начало его кодирования, и в процессе итерации вы будете каждые пару недель отправлять бета-приложение клиенту, чтобы он мог видеть ваш прогресс и давать вам отзывы о том, как все работает.
Каждый раз, когда вы отправляете бета-версию клиенту, вы проходите через базовый контрольный список: подписываете приложение, загружаете его в бета-сервис, добавляете в него новую версию и т. д. Добавьте к этому то, что вам нужно сделать. один раз (каждый год): подписание сертификатов, подписание сертификатов push-уведомлений (при необходимости) и многое другое.
С Fastlane все это теперь может происходить автоматически!
Отправка в бета-версию Crashlytics
Например, вам нужно создать сертификаты подписи и профили подготовки, чтобы поделиться своим приложением через бета-версию Crashlytics.
В Fastlane есть действие match , которое после настройки выполняет следующие действия:
- Создайте сертификаты подписи распространения.
- Создайте специальный профиль подготовки (прикрепленный к сертификату из № 1).
- Сохраните сертификат и профиль из № 1 и № 2 в репозиторий Git, зашифровав их с помощью OpenSSL.
Установка проста.
Во-первых, запустите fastlane match init , чтобы начать работу, и, как только вы настроите Git-репозиторий, просто вызовите fastlane match adhoc , чтобы получить специальный профиль подготовки, или запустите fastlane match appstore чтобы получить сертификат App Store.

Преимущества использования match заключаются в том, что вы можете очень легко синхронизировать сертификаты между компьютерами и между товарищами по команде без необходимости отзывать сертификаты, а также в скорости, которую вы получаете. Просто запустив fastlane match appstore вы получите сертификат за пару секунд.
Что ж, теперь у нас есть необходимые сертификаты и подготовка, давайте сделаем релиз на Crashlytics.
Типичный рабочий процесс для отправки вашего приложения в Crashlytics Fabric включает следующие шаги:
- Создайте сертификаты подписи распространения.
- Создайте специальный профиль подготовки (прикрепленный к сертификату из № 1).
- Настройте свое приложение на использование профиля подготовки из # 2.
- Заархивируйте свое приложение.
- Откройте Fabric и следуйте инструкциям, чтобы отправить приложение бета-тестерам.
Fastlane заменяет рутинную работу следующим образом:
platform :ios do lane :beta do match(type: “adhoc”) gym crashlytics end end Теперь запуск fastlane beta с вашего терминала запустит этот скрипт.
Это сначала вызовет match , действие, которое обрабатывает создание и обновление сертификатов подписи и профилей подготовки, затем вызов gym , действие, которое создает и упаковывает приложение для вас, используя те же сертификаты и профили, созданные ранее, и, наконец, crashlytics , который собирается взять этот подписанный .ipa и загрузить его в сервис Crashlytics.
Все эти шаги всегда вызываются в одном и том же порядке, что делает результирующий файл более предсказуемым и уменьшает количество ошибок.
MacBook-Pro:TestProject user$ fastlane beta +------+-------------------------------------+-------------+ | fastlane summary | +------+-------------------------------------+-------------+ | Step | Action | Time (in s) | +------+-------------------------------------+-------------+ | 1 | Verifying required fastlane version | 0 | | 2 | match | 57 | | 3 | gym | 592 | | 4 | crashlytics | 195 | +------+-------------------------------------+-------------+ [20:25:13]: fastlane.tools just saved you 14 minutes!Итак, это была базовая настройка того, как запустить Fastlane для отправки вашего приложения в Crashlytics. Что еще мы можем автоматизировать?
Увеличение версий сборки
Мы можем, например, установить, что каждый раз, когда мы собираемся отправить бета-версию, мы хотим увеличить номер версии сборки.
Этого можно добиться с помощью действия под названием increment_build_number , которое можно вызвать из терминала с помощью fastlane run increment_build_number или использовать в нашей бета-версии:
platform :ios do lane :beta do increment_build_number match(type: “adhoc”) gym crashlytics end endПоздравляем! Теперь у вас есть сценарий автоматического развертывания, который также увеличивает номер версии вашей сборки. Единственное предостережение заключается в том, что, как только вы вызовете эту полосу, в вашем проекте будут изменены файлы (или, по крайней мере, те, которые включают номер сборки).
Если вы все равно планировали зафиксировать это изменение в репозитории, для этого есть действие: commit_version_bump . Это действие фиксирует файлы с новым номером версии.
platform :ios do lane :beta do increment_build_number match(type: "adhoc") gym crashlytics commit_version_bump( xcodeproj:"myProject.xcodeproj", ) end endЭто зафиксирует файлы с сообщением о коммите, подобным этому «Версия Bump to 27».
Crashlytics для TestFlight
Что ж, если вы дошли до этого момента, вы можете автоматически развернуть Crashlytics за очень короткое время, что в долгосрочной перспективе сэкономит вам бесчисленное количество часов. Самое приятное в этом то, что если вы хотите вместо этого отправить свое приложение в TestFlight, все, что вам нужно сделать, это изменить crashlytics на pilot .
Или вы можете создать для этого отдельную полосу:
platform :ios do lane :beta-testflight do increment_build_number match(type: "adhoc") gym pilot commit_version_bump( xcodeproj:"myProject.xcodeproj", ) end endАвтоматизация iOS стала проще
Fastlane прост и удобен в использовании. Но это приносит удивительную пользу вашему обычному рабочему процессу разработки iOS, избавляя вас от выполнения черных вещей и часов вашего времени, которые вы в конечном итоге потратили бы впустую.
Я надеюсь, что вы найдете это введение в Fastlane полезным. Вы можете ознакомиться с официальной документацией, чтобы узнать больше о Fastlane, особенно о списке действий, если вы ищете вдохновение в том, что вы можете автоматизировать для своих текущих и следующих проектов iOS.
