Рубрики
Uncategorized

Автоматизированное развертывание с Fastlane на iOS

Будучи разработчиками iOS, мы все испытали удовлетворительное чувство, наконец, завершение кодирования приложения … помеченное iOS, мобильными, DevOps, программированием.

Как разработчики iOS, мы все испытали удовлетворительное чувство, что наконец -то завершают кодирование приложения и взволнованы, чтобы поделиться им с пользователями. До того, как пользователи наслаждались приложением, остается еще одна вещь, чтобы выпустить приложение в App Store! Конечно, вы думаете, что это не должно занять больше времени, чем несколько минут вашего времени?

О, ты совершенно неправ.

Чтобы достичь этого шага, необходимо следующее:

  • Убедитесь, что у вас есть правильные сертификаты и профили подготовки.
  • Создайте разнообразные скриншоты приложения.
  • Создайте приложение.
  • Загрузите приложение в App Store Connect.
  • Войдите в систему App Store Connect, введите правильные метаданные и проверьте загрузку.
  • Отправьте приложение для просмотра и подождите.

Эти шаги являются лишь одним из подходов к развертыванию вашего приложения, так как есть еще много аспектов, которые следует учитывать, такие как использование номеров сборки/версий, запуск тестов, загрузка бета -выпусков и т. Д.

Почему это так сложно?

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

Этот блог представит Fastlane, преимущества, которые он предоставляет, и представляют конкретные сценарии, показывающие, как он автоматизирует развертывание приложения. Будут рассмотрены следующие примеры автоматизации:

  • Создание приложения
  • Генерация сертификатов и профилей обеспечения
  • Развертывание в TestFlight
  • Развертывание в App Store

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

Важное примечание: для использования Fastlane для iOS вам необходимо иметь платную учетную запись Apple Developer.

Что такое Fastlane?

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

Fastlane функции

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

Это основные функции включают:

  • Автоматизированное генерация скриншотов
  • Бета -развертывание
  • Развертывание App Store
  • Подписание кода
  • Настройка Fastlane

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

  1. Установите последние инструменты командной строки XCODE
xcode-select --install
  1. Установите Fastlane
# Using RubyGems
gem install fastlane -NV
# Alternatively using Homebrew
brew cask install fastlane
  1. Перейдите к проекту и запустите
fastlane init

Appfile и fastfile

После запуска Fastlane Init, Fastlane автоматически создает новую папку в проекте под названием «Fastlane». Эта папка содержит два файла: AppFile и FastFile, которые используются для автоматизации процесса развертывания.

Иллюстрация 1: Структура папки Fastlane

AppFile содержит информацию о разработчике и приложении, такую как разработчик Apple Email и идентификатор приложения приложения. FastFile содержит разные полосы, написанные в Ruby, которые представляют собой различные рабочие процессы, или, другими словами, разные задачи автоматизации. Мы можем создать и настроить их, как бы нам хотелось. Например, полоса может автоматизировать выбросы в тестовую поле или развертывание в App Store. FastFile — это файл, в котором разработчики проводят больше всего времени, когда дело доходит до Fastlane.

Используя Fastlane

Теперь давайте посмотрим на некоторые примеры того, как автоматизировать задачи с помощью Fastlane.

Наша первая переулка FastFile: создание приложений

Чтобы успешно загрузить новую сборку в App Store, нам сначала нужно создать приложение на App Store Connect и на портале Apple Developer. Хотя этот процесс не слишком сложный, он все еще немного утомительен. Поэтому это хорошая отправная точка для автоматизации с Fastlane.

Во -первых, откройте Appfile и введите несколько параметров:

app_identifier '[[YOUR APP IDENTIFIER]]' # The bundle identifier of the app
apple_id '[[YOUR APPLE EMAIL]]' # Apple email address
team_id '[[YOU TEAM ID]]' # Team ID from the Developer Portal
itc_team_id '[[YOUR ITC TEAM ID]]' # ID from the App Store Connect team

Эти параметры используются таким образом, чтобы Fastlane мог нацелиться на разработчика, приложения и команды. Не обязательно вводить какие -либо из них, так как Fastlane в любом случае просит все недостающие параметры. Иногда еще проще не вводить некоторые из них, как, например, Team_id и ITC_TEAM_ID, поскольку Fastlane автоматически находит и перечисляет все команды разработчика.

После настройки AppFile мы перейдем к FastFile. Откройте его, удалите все и введите следующее:

default_platform(:ios)
platform :ios do
  desc "Creates a new app on both App Store Connect and the Apple Developer Portal"
  lane :app_create do
    produce
  end
end

По сути, эта полоса использует команду продукта, чтобы создать новое приложение на сайтах App Store Connect и Apple Developer с подходящим описанием. Лейн называется APP_CREATE, но это произвольно и может быть изменена на то, что наиболее подходит.

Теперь перейдите к каталогу приложений в терминале и запустите команду FastLane APP_CREATE. Fastlane предложит пользователю ввести имя приложения. Убедитесь, что это уникально. После успешного завершения процесса войдите в App Store Connect и Apple Developer Portal и новое приложение теперь должны быть видны в обоих местах.

Генерирование сертификатов и профилей обеспечения

После создания приложения пришло время генерировать необходимые сертификаты для приложения.

Ниже приведены некоторые преимущества использования Fastlane для получения сертификатов:

  • Экономит время! Генерация сертификатов вручную — это утомительный и скучный процесс.
  • Если команда решает об этом, одна учетная запись может быть использована по всей команде, которая уменьшит количество различных профилей подготовки на портале разработчиков Apple, сохраняя его намного чище и легче управлять.

Следуйте этим шагам, чтобы генерировать сертификаты и профили предоставления:

  1. Создайте одну учетную запись, которая будет использоваться за все время.
  2. Fastlane использует GIT Repos и Google Cloud Storates для хранения сертификатов для проекта в одном централизованном месте. Создайте один из них, а также скопируйте URL.
  3. Запустить матч Init. Это побудит пользователя ввести URL с предыдущего шага. Результатом этой команды является новый файл в папке Fastlane с именем MatchFile. Именно этот файл используется в качестве ссылки для генерации сертификатов и профилей обеспечения.

Откройте MatchFile и введите это:

git_url '[[YOUR PRIVATE GIT REPO URL]]'
app_identifier '[[YOUR APP ID]]'
username '[[YOUR APPLE DEVELOPER PORTAL USERNAME]]'

Теперь запустите следующие команды:

fastlane match app store
fastlane match development

Это создаст разработку, сертификаты App Store и профили для приложения. Проще простого.

Развернуть в Testflight с Fastlane

После достижения определенного момента в разработке мы хотели бы развернуть приложение для выбранного количества тестеров, которые могут предоставить нам обратную связь. С Fastlane можно полностью автоматизировать этот выпуск. Давайте сделаем это, создав простую полосу для бета -версии:

lane :beta do
  scan # run tests
  match(type: "appstore")
  increment_build_number
  build_app(scheme: "[[YOUR APP SCHEME]]")
  upload_to_testflight
end

Запустите команду Fastlane Beta, чтобы выполнить полосу движения.

Идея, стоящая за ней, состоит в том, чтобы сначала запустить все тесты с помощью команды сканирования, поскольку, если они не сработают, Fastlane автоматически прекращает выполнение остальной части сценария.

Загрузка теперь полностью автоматизирована. Однако, если бы мы вошли в подключение к App Store Connect, мы бы увидели, что прежде чем фактически отправить приложение для бета -версии, нам также потребуется ввести тестовую информацию для приложения. Поскольку Fastlane используется, было бы удобно также автоматизировать этот вход. Чтобы достичь этого, бета -переулок может выглядеть примерно так:

lane :beta do
  scan # run tests
  match(type: "appstore")
  increment_build_number
  build_app(scheme: "[[YOUR APP SCHEME]]")
  upload_to_testflight(
  localized_app_info: {
    "default": {
      feedback_email: "default@email.com",
      marketing_url: "https://example.com/marketing-defafult",
      privacy_policy_url: "https://example.com/privacy-defafult",
      description: "Default description",
    }
  },
  beta_app_review_info: {
    contact_email: "email@email.com",
    contact_first_name: "firstname",
    contact_last_name: "lastname",
    contact_phone: "111222333444",
    demo_account_name: "demo account name",
    demo_account_password: "demo password",
    notes: "This is a review note"
  })
end

Теперь, когда мы запускаем команду Fastlane Beta, вся информация о тестировании загружается в TestFlight, в дополнение к бинарному.

Обратите внимание, что действие Localize_App_info может не работать, но остается в этом блоге для демонстрационных целей.

Развернуть в App Store с Fastlane

После того, как тестеры просмотрели приложение, наконец -то пришло время загрузить приложение в App Store. Теперь мы рассмотрим несколько шагов, чтобы автоматизировать это:

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

Запустите Fastlane init Доставление в командной строке. Это создаст ряд новых папок и файлов в каталоге Fastlane. Это включает в себя файл доставки, папку метаданных и папку экрана. Так выглядит папка Fastlane:

Иллюстрация 2: Структура папки Fastlane после запуска Fastlane init доставка

Цель инициализации файла доставки состоит в том, чтобы мы могли ввести все необходимые метаданные и скриншоты на местном уровне, прежде чем отправлять его в App Store. Это тогда очень поможет автоматизировать процесс. Вот как структурирована новая папка метаданных:

Иллюстрация 3: Новая папка метаданных

Пройдите через папку метаданных и введите все различные параметры. Папка EN-US содержит информацию о приложении для языка английского языка. Можно ввести весь язык приложения таким же образом, просто используя разные языковые коды. Метаданные приложения теперь готовы к загрузке.

Автоматизация скриншотов

Fastlane использует пользу Apple Uitesting Framework для автоматизации скриншотов. Основная логика, стоящая за этим, заключается в запуска тестов пользовательского интерфейса, и когда достигается определенная точка в тесте, функция снимка Fastlane должна использоваться для захвата скриншота. Например, вы можете сделать снимок экрана после того, как uit выполняет ввод в текстовое поле пользователя на экране входа в систему, как это:

userNameTextfield.typeText("Username")
snapshot("01LoginScreen")

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

Чтобы настроить автоматические скриншоты, мы можем сделать следующее: запустить Fastlane Snapshot init в каталоге проекта. Это создаст два новых файла в папке Fastlane; один называется Snapfile, а другой называется Snapshothelper.Swift.

Иллюстрация 4: Snapfile и Snapshothelper.Swift

Зайдите в проект Xcode и перейдите к файлу -> new -> Target. Во всплывающем окне, которое появляется, найдите пакет тестирования пользовательского интерфейса iOS и нажмите следующий.

На новом экране измените название uitests или оставьте все как есть, и нажмите «Закончить».

Создана новая папка в проекте Xcode с UITESTS. Найдите ранее созданный Snapshothelper.Swift и перетащите его в новую папку Uitests. ПРИМЕЧАНИЕ. Обязательно скопируйте его правильно, выбрав оба элемента копирования, если это необходимо », так и кнопку UITAR TARGET, а затем отказались от цели проекта.

Откройте «схемы управления» в проекте Xcode и убедитесь, что проверяются и флажки «Show», и «Shared» для созданных схем UITEST.

В том же окне нажмите на недавно созданную схему UITE и нажмите «Редактировать», а затем в новом окне нажмите «Строительство».

Это покажет самую UITE -цель с несколькими флажками. Убедитесь, что флажки с именем «тест» и «запуск» проверены. Fastlane теперь может получить доступ к целевой схеме UITO. Откройте SnapFile и введите это:

devices([

 "iPhone X",

 "iPhone 8"

])

languages(['en-US'])

scheme("[[YOUR UITEST SCHEME]]")

output_directory "./fastlane/screenshots"

clear_previous_screenshots(true)

Теперь все готово для того, чтобы запечатлеть скриншоты. Введите эти строки кода в вашу функцию UITEST, чтобы использовать Snapshothelper.Swift:

let app = XCUIApplication()
setupSnapshot(app)
app.launch()

Как я уже упоминал ранее, мы не будем освещать фактическое написание UITests, поскольку каждое приложение имеет разные и конкретные экраны. Следовательно, задача читателя — теперь создавать UITests для автоматизации экрана приложения.

После написания тестов запустите снимки Fastlane в терминале, и если все будет правильно настроено, будут сделаны скриншоты.

Строительство и загрузка в магазин приложений

С помощью создания файла доставки и автоматизированного экрана, следующим шагом будет загружать все в App Store Connect. Несколько полос движения будут созданы индивидуально для каждой из задач, необходимых для выпуска, а затем объединены вместе, чтобы сделать одну полосу движения для всего процесса выпуска.

Первая полоса для тестирования:

lane :test do
  desc "Run tests"
  scan
end

Следующая полоса для съемки экрана:

lane :screenshots do
  desc "Take screenshots"
  snapshot
end

Третья полоса для создания заявления:

lane :build do
  desc "Build application"
  increment_build_number({
    build_number: latest_testflight_build_number + 1
  })
  build_ios_app(
    scheme: "[[YOUR APP SCHEME]]"
  )
end

INGRENT_BUILD_NUMBE Проверяет последний номер сборки TestFlight и увеличивает этот номер сборки на 1. Это лучше, чем увеличить автоматически, потому что иногда двоичный файл не загружается в App Store/Testflight из -за ошибки, но номер сборки увеличивается. Имейте в виду, что должна быть по крайней мере одна сборка на Testflight, чтобы запустить команду Anday_Testflight_build_number.

Четвертая полоса — загрузить бинар:

lane :upload do
  desc "Upload metadata, screenshots and binary"
  deliver(
    force: true,
    automatic_release: true,
  )
end

Команда доставки является псевдонима для действия upload_to_app_store и используется для загрузки метаданных, скриншотов и двоичного магазина в магазин приложений. Команда Force: True предназначена для прохождения предварительного просмотра HTML метаданных и команды Automatic_Release: True для обеспечения автоматического выпуска после того, как приложение будет рассмотрено в App Store Connect.

Теперь все это может быть объединено в одну полосу движения под названием релиз:

lane :release do
  desc "Run tests, take screenshots, upload deliver file, upload app"
  ensure_git_status_clean
  test
  match(type: "appstore")
  screenshots
  build
  upload 
end

В дополнение к созданным полосам, команда Match добавляется, чтобы убедиться, что сертификаты актуальны, и убедитесь, что он используется, чтобы убедиться, что вы работаете с чистым GIT Repo. При этой настройке номер версии должен быть увеличен вручную. Имейте в виду, что Fastlane имеет действия для автоматического увеличения номеров версий. Посмотрите эту ссылку для получения дополнительной информации.

Перейдите к каталогу Project, запустите релиз Fastlane и посмотрите, как происходит волшебство!

Заключительные мысли

Как вы можете видеть из этого блога, Fastlane является мощным инструментом, используемым для автоматического развертывания. Как только вы станете комфортно, используйте его, сценарии и задачи автоматизации станут более продвинутыми и подходящими для ваших точных потребностей. Если вы не решаетесь, когда попробуете, просто начните с небольших задач автоматизации и опирайтесь на это. Через некоторое время это определенно станет важным инструментом в вашем наборе инструментов.

Оригинальное сообщение в блоге: Автоматизированное развертывание с Fastlane на iOS

Оригинал: «https://dev.to/rubicon_dev/automated-deployment-with-fastlane-on-ios-218p»