Fastlane: iOS-автоматизация круиз-контроля

Опубликовано: 2022-03-11

Создание программного обеспечения для iOS — это больше, чем просто написание кода на Objective-C или Swift: оно включает в себя знание того, как работает UIKit, как создаются сертификаты, как публиковать ваше приложение в магазине, как работать с обзорами приложений и многое другое. Если вы находите этот вечный список задач утомительным, некоторая автоматизация вашего рабочего процесса — это именно то, что вам нужно.

Встречайте Fastlane, инструмент, разработанный для того, чтобы сэкономить минуты или даже часы при каждом развертывании.

Автоматизация доставки с Fastlane iOS

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. Создайте сертификаты подписи распространения.
  2. Создайте специальный профиль подготовки (прикрепленный к сертификату из № 1).
  3. Сохраните сертификат и профиль из № 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. Создайте специальный профиль подготовки (прикрепленный к сертификату из № 1).
  3. Настройте свое приложение на использование профиля подготовки из # 2.
  4. Заархивируйте свое приложение.
  5. Откройте 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.