Инженерные команды в наши дни считаются трудностями в создании, тестировании и развертывании их мобильных приложений локально без необходимости поддерживать необходимые для него инструменты. Существует много технического обслуживания, так как вам нужно отслеживать, какие версии этих инструментов были установлены, чтобы избежать проблем совместимости при создании пакетов приложения, особенно гибридных приложений, построенных на 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
Проектные подзадачи.
Настраивать
- Установите Fastlane
- через Homebrew (
Brew установить Fastlane
) - через Rubygems (
sudo Gem установить Fastlane
)
- через Homebrew (
- Перейдите на свой терминал до вашего соответствующего
Android
а такжеios
каталог проектов и запуститьFastlane Init
- У вас должна быть структура папок, которая похожа на приведенную ниже:
fastlane/ Fastfile Appfile
Самый интересный файл — Fastlane/FastFile
, который содержит всю информацию, необходимую для распространения вашего приложения.
- Внутри твоего
Fastfile
, вы можете начать писать полосы:
lane :my_lane do # Whatever actions you like go in here. end
Вы можете начать добавлять действия в свои полосы движения. Действия Fastlane можно найти Здесь Анкет
Скопируйте следующую структуру файла в свой
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
default_platform (: ios)
— Инициализируйте свой файл FastFile с платформой по умолчаниюПлатформа: ios do
— Добавить все действия в платформу
С 5 до 6 он сообщит Fastlane, что этот конкретный FastFile предназначен исключительно для операций iOS. Поэтому вместо запуска команды Fastlane
, вы на самом деле будете бежать Fastlane ios
Анкет Поэтому все, что припарковано под Платформа: ios do
будет выполнена, когда в вашем терминале будут вызваны полосы движения.
Если вы хорошо разбираетесь в Ruby, вы можете написать свои собственные функции Ruby, чтобы помочь вам написать пользовательские действия, которые вам требуются для дальнейшей гибкости, особенно когда речь идет о создании нескольких приложений с различными средами в вашей организации.
Fastlane идентифицирует их как действие независимо от того, что Fastlane написан в Ruby Анкет
В этой статье мы будем следить за написанием действий, используя функцию Ruby. Это так, чтобы мы можем способствовать повторному использованию действий в других развертываниях полос.
Прежде чем мы начнем писать нашу функциональность на переулках, мы сначала перечислим наши шаги действия:
- Настройка API -ключа для App Store Connect (
APP_STORE_CONNECT_API_KEY
) — Это позволит Fastlane подключиться к вашему магазину приложений для выполнения других действий, которые требуют аутентификации пользователя - Настройка CI (
setup_ci
) — Это настроит временную брелку для работы на вашем конвейере CI по вашему выбору - Создать и синхронизировать профили и сертификаты (
совпадать
) — Это поможет нам сохранить наши профили и сертификаты для ваших команд - Настройки подписания кода обновления (
update_code_signing_settings
) — Это для обновления идентификаторов подписания кода, чтобы соответствовать имени вашего профиля и идентификатора пакета приложений - Увеличить номер вашего приложения (
urment_build_number
) — Это автоматизирует номер вашего приложения, получая последний номер сборки Testflight и увеличивая значение - Стройте приложение (
build_app
) — Это создаст приложение для нас и генерирует двоичный (IPA) файл - Загрузите свой двоичный файл в TestFlight (
upload_to_testflight
) — Это автоматизирует процесс загрузки двоичного файла в Testflight и соответствующим образом информирование ваших тестеров
Шаги
Шаг 1: Настройка клавиши API API Store App
- Посетите следующее Страница Анкет Это предоставит вам пошаговый процесс при создании ключа API
- После того, как вы сгенерировали ключ, обратите внимание:
- Идентификатор эмитента
- Идентификатор ключа
- Загрузите сгенерированный ключ API — A
.p8
файл - Храните его в безопасном месте, в котором вы можете легко получить к ним доступ. Избегайте их хранения в том же хранилище, что и у любого в вашей организации, будет доступ к учетной записи компании Apple.
- В этой статье мы храним их в другом репозитории GIT с ограниченными областями чтения и записи областей для конкретных инженеров в нашей организации.
Шаг 2: Настройка сценария Fastlane
- Установите ключ 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
— Идентификатор ключа, с которого вы приняли сведению, когда вы сгенерировали клавиш APIessuer_id
— Идентификатор эмитента, с которого вы приняли к сведению, когда вы сгенерировали ключ APIkey_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»