Рубрики
Uncategorized

Автоматизация развертывания мобильных приложений с использованием инструментов Fastlane и CI/CD

Проблемные команды инженеров в наши дни считают, что создавать, тестировать и развернуть … Теги с Fastlane, DevOps, реагирующим, инструментами.

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

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

Fastlane может легко:

  • Распределить бета -сборщики на ваши тестеры
  • Публикуйте новый выпуск в App Store за секунды
  • Надежно кодируйте, подпишите ваше заявление — облегчает все ваши головные боли
  • Надежно поддерживать свои профили подготовки и сертификаты приложений в репозитории GIT

Все действия в Fastlane записаны в дорожки Анкет Определить полосы проста. Думайте о них как о функциях на любом языке программирования по вашему выбору. Вы определяете все свои действия в этой полосе.

Пример Лейн составляет:

lane :beta do
  increment_build_number
  build_app
  upload_to_testflight
end

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

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

До- реквизиты

Как и в большинстве проектов, вам необходимо выполнить первоначальную настройку проекта для поддержки создания вашего приложения, например:

  • Установка зависимостей вашего проекта
  • Установить Xcode и Android Studio
  • Установите Java SDK
  • Настройка репозитория GIT для сертификатов Android и iOS — будет объяснено позже в статье

Структура папки Fastlane

В идеальных случаях у вас будет проект приложения для Android и проект приложения для iOS, Оба размещены в одном и том же хранилище кода, что и ваш проект

projectFolder/
    app/
    scripts/
    ios/
        fastlane/
            ....
  android/
        fastlane/
            ....
    package.json
    .gitignore
  ...

В этом случае вы захотите инициализировать папку Fastlane в соответствующем Android и ios Проектные подзадачи.

Настраивать

  1. Установите Fastlane
    • через Homebrew ( Brew установить Fastlane )
    • через Rubygems ( sudo Gem установить Fastlane )
  2. Перейдите на свой терминал до вашего соответствующего Android а также ios каталог проектов и запустить Fastlane Init
  3. У вас должна быть структура папок, которая похожа на приведенную ниже:
fastlane/
    Fastfile
    Appfile

Самый интересный файл — Fastlane/FastFile , который содержит всю информацию, необходимую для распространения вашего приложения.

  1. Внутри твоего Fastfile , вы можете начать писать полосы:
lane :my_lane do
  # Whatever actions you like go in here.
end
  1. Вы можете начать добавлять действия в свои полосы движения. Действия Fastlane можно найти Здесь Анкет

  2. Скопируйте следующую структуру файла в свой FastFile

default_platform(:ios)

def beta(arg1, arg2)
  # You may use Ruby functions to write custom actions for your app deployment
end

platform :ios do

    desc "Building the IPA file only"
      lane :build_ios_app_ipa do
        app_identifier = "com.appbundle.id"
        beta("AppSchemeName", app_identifier)
      end

end
  1. default_platform (: ios) — Инициализируйте свой файл FastFile с платформой по умолчанию

  2. Платформа: ios do — Добавить все действия в платформу

С 5 до 6 он сообщит Fastlane, что этот конкретный FastFile предназначен исключительно для операций iOS. Поэтому вместо запуска команды Fastlane , вы на самом деле будете бежать Fastlane ios Анкет Поэтому все, что припарковано под Платформа: ios do будет выполнена, когда в вашем терминале будут вызваны полосы движения.

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

Fastlane идентифицирует их как действие независимо от того, что Fastlane написан в Ruby Анкет

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

Прежде чем мы начнем писать нашу функциональность на переулках, мы сначала перечислим наши шаги действия:

  1. Настройка API -ключа для App Store Connect ( APP_STORE_CONNECT_API_KEY ) — Это позволит Fastlane подключиться к вашему магазину приложений для выполнения других действий, которые требуют аутентификации пользователя
  2. Настройка CI ( setup_ci ) — Это настроит временную брелку для работы на вашем конвейере CI по вашему выбору
  3. Создать и синхронизировать профили и сертификаты ( совпадать ) — Это поможет нам сохранить наши профили и сертификаты для ваших команд
  4. Настройки подписания кода обновления ( update_code_signing_settings ) — Это для обновления идентификаторов подписания кода, чтобы соответствовать имени вашего профиля и идентификатора пакета приложений
  5. Увеличить номер вашего приложения ( urment_build_number ) — Это автоматизирует номер вашего приложения, получая последний номер сборки Testflight и увеличивая значение
  6. Стройте приложение ( build_app ) — Это создаст приложение для нас и генерирует двоичный (IPA) файл
  7. Загрузите свой двоичный файл в TestFlight ( upload_to_testflight ) — Это автоматизирует процесс загрузки двоичного файла в Testflight и соответствующим образом информирование ваших тестеров

Шаги

Шаг 1: Настройка клавиши API API Store App

  1. Посетите следующее Страница Анкет Это предоставит вам пошаговый процесс при создании ключа API
  2. После того, как вы сгенерировали ключ, обратите внимание:
    • Идентификатор эмитента
    • Идентификатор ключа
  3. Загрузите сгенерированный ключ API — A .p8 файл
  4. Храните его в безопасном месте, в котором вы можете легко получить к ним доступ. Избегайте их хранения в том же хранилище, что и у любого в вашей организации, будет доступ к учетной записи компании Apple.
    • В этой статье мы храним их в другом репозитории GIT с ограниченными областями чтения и записи областей для конкретных инженеров в нашей организации.

Шаг 2: Настройка сценария Fastlane

  1. Установите ключ API API Store App для генерации хэша, используемого для авторизации JWT
def setup_api_key()
  sh "if [ -d \"appstoreapi\" ]; then echo 'Folder exist, executing next step'; else git clone #{ENV['APPSTORE_API_GIT_URL']} appstoreapi; fi"
  app_store_connect_api_key(
    key_id: ENV['APPSTORE_KEY_ID'],
    issuer_id: ENV['APPSTORE_ISSUER_ID'],
    key_filepath: Dir.pwd + "/appstoreapi/AuthKey_xxx.p8",
  )
end

В приведенном выше фрагменте я клонирую репозиторий GIT, который содержит мой клавиш API Connect API, а затем использует app_store_connect_api_key Действие от Fastlane. Это принимает несколько параметров, однако, есть 3 жизненно важных параметров:

  • key_id — Идентификатор ключа, с которого вы приняли сведению, когда вы сгенерировали клавиш API
  • essuer_id — Идентификатор эмитента, с которого вы приняли к сведению, когда вы сгенерировали ключ API
  • key_filepath — Путь файла к вашему .p8 файл

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

Я очень рекомендую хранить конфиденциальные учетные данные или URL -адреса и получить доступ к ним из переменной среды ( .ENV ) в той же папке проекта — Fastlane/.env

После того, как вы подготовили файл, вы можете легко получить доступ к любой переменной среды, просто пропустив в Env ['env_name'] в быстрыйфил.

2. Определите функцию Ruby с 2 аргументами

def beta(scheme, bundle_id)
end

В рамках этой функции мы указываем шаги действия, которые мы упомянули выше

def beta(scheme, bundle_id)
    setup_api_key() # Import the setup_api_key function
    setup_ci() # Uses fastlane action to create a temporary keychain access on a CI pipeline
end

3. Использовать соответствие Действие от Fastlane

матч это действие Fastlane, которое позволяет легко синхронизировать ваши сертификаты и профили обеспечения. Требуется новый подход к подписанию кода iOS и MacOS, где вы делитесь одной идентификацией подписания кода в вашей команде инженерных технологий, чтобы упростить настройку и предотвратить проблемы подписания кода. Фонд матч был построен с использованием реализации CodeSigning.guide Concept Анкет

Вы можете хранить свои личности подписания кода в:

  • GIT Repository
  • Google Cloud
  • Amazon S3 Bucket

В этой статье мы решили хранить его репозиторий GIT. Тем не менее, в случае хранения в репозитории GIT вам необходимо предоставить форму базового разрешения, чтобы соответствовать доступу и клонированию вашего репозитория.

Какой бы поставщик GIT вы ни выбрали (GitHub, Bitbucket, Gitlab или Azure DevOps), вам нужно будет настроить токен личного доступа (PAT), который Fastlane будет использовать для клонирования и синхронизировать личности подписания кода.

В вашем FastFile вам нужно будет кодировать свой PAT с помощью шифрования BASE64

authorization_token_str = ENV['GITHUB_TOKEN']
basic_authorization_token = Base64.strict_encode64(authorization_token_str)

basic_authorization_token Переменная будет использоваться при настройке реализации Match ниже.

match(
  git_url: "",
  git_basic_authorization: basic_authorization_token,
  readonly: true,
  type: "appstore",
  app_identifier: [
    bundle_id
])

Из фрагмента выше, это очень простая реализация. Обратите внимание на readonly параметр. Это имеет решающее значение для создания и синхронизации ваших профилей и сертификатов с учетной записью разработчика Apple. Если вы установите readonly к ЛОЖЬ Вы позволите MATCH автоматически синхронизировать и создавать новые профили и CERT, если он сочтет ваши существующие сертификаты и профили истекли или повреждены. После того, как он подготовил профили, вы можете установить readonly к Верно Анкет Это следует избегать случаев EGDE, когда он может случайно создать новые сертификаты и профили.

4. Обновление кода подписания личности

Этот шаг в основном используется для обновления настроек XCode на конвейере CI из -за поведения по умолчанию по выбору сертификата и профиля по умолчанию из агента Mac OS.

update_code_signing_settings(
  use_automatic_signing: false,
  path: "../ios/AppName.xcodeproj",
  code_sign_identity: "iPhone Distribution",
  profile_name: "match AppStore com.appbundle.id",
  bundle_identifier: "com.appbundle.id"
)

Из приведенного выше фрагмента вы можете получить свой имя профиля и Bundle_Identifier из вашей учетной записи Apple Developer или обратите внимание на них с шага матча, как только он будет выполнен.

5. Прибавить номер сборки приложения

Мы просто увеличиваем число, получив ваш последний номер сборки Testflight и увеличивая значение с 1.

increment_build_number({
  build_number: latest_testflight_build_number + 1
})

puts "BUILD_NUMBER: #{lane_context[SharedValues::BUILD_NUMBER]}"

ставит Команда распечатает номер сборки в консоли, которая распространяется на контексте полосы движения.

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

6. Создайте приложение

Этот шаг будет включать в себя создание вашего приложения для создания двоичного (APK) файла.

build_app(
  workspace: "../ios/AppName.xcworkspace",
  export_xcargs: "-allowProvisioningUpdates",
  scheme: scheme,
  clean: true,
  silent: true,
  sdk: "iphoneos"
)
puts "IPA: #{lane_context[SharedValues::IPA_OUTPUT_PATH]}"

build_app Действие обеспечивается Fastlane.

ставит Команда распечатает местоположение пути файла файла IPA, в котором вы можете использовать для ручной загрузки в TestFlight.

7. Загрузите двоичный файл в TestFlight

Этот шаг будет включать загрузку вашего двоичного файла в вашу учетную запись TestFlight.

app_identifier = "com.appbunde.id"
upload_to_testflight(app_identifier: app_identifier)

upload_to_testflight это действие, предоставляемое Fastlane.

Собираем их всех вместе

Финальная полоса должна выглядеть примерно так:

desc "Build and push a new build to TestFlight"
  lane :release_build do
    app_identifier = "com.appbundle.id"
    beta("AppSchemeName", app_identifier) # The custom function we wrote earlier
    upload_to_testflight(app_identifier: app_identifier)
  end

Когда вы выполняете Fastlane ios release_build В вашем терминале он будет работать на основе вышеупомянутых шагов выше.

Как видите, мы использовали функцию Ruby, чтобы сгруппировать все общие операции под одной крышей, так и для обеспечения:

  • Код повторно удобство использования
  • Последовательность
  • Чистый код

С помощью сценариев Fastlane вы можете легко интегрировать его с любыми инструментами CI/CD по вашему выбору:

  • Действия GitHub
  • Гитлаб CI
  • Лазурные DevOps
  • Bitbucket Tipelines

При настройке предварительных шагов в файле YAML вы можете просто включить скрипт Bash, который выполняет ваш скрипт FastLane

cd ios/android folder

fastlane ios/android release_build

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

Fastlane — это мощный инструмент, который помогает упростить процесс сборки вашей организации. Его можно использовать вдоль ваших существующих трубопроводов CI/CD или в качестве автономного сценария трубопровода, который будет использоваться на ваших местных машинах или пользовательских инструментах трубопровода, таких как Buildkite. Это потребовало бы дополнительных шагов, таких как клонирование репозитория и проверка ветвей, однако, все это легко доступно от Fastlane в качестве действий.

Проведите некоторое время на чтение документации, поскольку она содержит Много действий Из коробки, которая окажется полезной для ваших инженерных команд ( match , pilot , сертификат , вздох , Аппий , xctool , поставка и многое другое ) Кроме того, они предоставляют Обширный список плагинов Для сторонних интеграций, таких как Firebase, App Center, Yarn, Android-версия, Dropbox, Slack загрузка, S3, Bugsnag и многие другие. Вы можете перегружать свои сценарии Fastlane, соединяя его с инструментом CI/CD, таким как действия GitHub, трубопроводы Bitbucket или Azure DevOps. Небо это предел!

Оригинал: «https://dev.to/jeiman/automating-mobile-application-deployments-using-fastlane-and-ci-cd-tools-2iae»