Разработка мобильных приложений на NativeScript позволяет использовать знакомый JavaScript или TypeScript для создания нативных интерфейсов под iOS и Android. Однако процесс сборки, тестирования и развертывания может быть рутинным и отнимать много времени. Автоматизация этого процесса — ключ к повышению эффективности, особенно в условиях, когда российские команды часто работают в парадигме CI/CD (Continuous Integration/Continuous Delivery). Данная инструкция шаг за шагом проведет вас через настройку автоматизированного пайплайна с учетом локальных особенностей, таких как выбор инструментов и вендоров.
Первый шаг — подготовка проекта. Убедитесь, что ваш проект NativeScript использует актуальную версию CLI и имеет стабильную структуру. Инициализируйте систему контроля версий Git, если это еще не сделано. Ключевой файл для автоматизации — `package.json`. Пропишите в разделе `scripts` базовые команды для ручного запуска: `tns run android`, `tns run ios`, `tns test`. Это основа для дальнейшей автоматизации.
Выбор инструмента для CI/CD — критически важное решение. В российских реалиях популярны несколько вариантов: GitLab CI/CD (часто используется в корпоративных проектах внутри РФ), Jenkins (как онпремис-решение с полным контролем) и облачные сервисы, такие как GitHub Actions или Bitbucket Pipelines, доступ к которым требует стабильного международного подключения. Для проектов с кодом на GitHub или Bitbucket облачные пайплайны — отличный выбор. Для проектов, требующих хранения кода внутри страны или глубокой кастомизации, Jenkins или GitLab CI будут предпочтительнее. В этом руководстве в качестве примера рассмотрим GitLab CI/CD как баланс между гибкостью и популярностью.
Создайте в корне вашего проекта файл `.gitlab-ci.yml`. Это конфигурация вашего пайплайна. Определите этапы (stages). Типичный пайплайн для NativeScript может включать: `install` (установка зависимостей), `build_android`, `build_ios`, `test`, `deploy` (загрузка в магазины приложений).
Начните с этапа установки зависимостей. Укажите образ Docker, на котором будет выполняться сборка. Для NativeScript нужна среда с Node.js, NativeScript CLI и Java SDK для Android. Вы можете использовать официальный образ Node.js и затем установить NativeScript CLI и настройки Android SDK внутри задания, либо найти/создать свой готовый образ. Учитывайте, что работа с iOS требует сборки на macOS, поэтому для этапа `build_ios` вам понадобится специальный раннер (например, MacStadium) или использование облачных сервисов сборки для iOS, что может быть сопряжено с дополнительными сложностями в текущих условиях.
Пример этапа установки:
```
install_dependencies:
stage: install
script:
- npm install -g nativescript
- npm install
- tns doctor
```
Далее, этап сборки для Android. Здесь важно правильно настроить переменные окружения для Android Keystore (если вы собираете релизную версию). Никогда не храните пароли и keystore в репозитории! Используйте защищенные переменные (GitLab CI/CD Variables). Скрипт может выглядеть так:
```
build_android:
stage: build_android
dependencies:
- install_dependencies
script:
- tns build android --release --key-store-path $ANDROID_KEYSTORE_PATH --key-store-password $ANDROID_KEYSTORE_PASSWORD --key-store-alias $ANDROID_KEYSTORE_ALIAS --key-store-alias-password $ANDROID_KEYSTORE_ALIAS_PASSWORD
artifacts:
paths:
- platforms/android/app/build/outputs/apk/release/*.apk
```
Этап для iOS будет аналогичным, но требует указания типа сборки и профиля provisioning. Это наиболее сложная часть из-за требований Apple.
Этап автоматического тестирования. NativeScript поддерживает unit-тесты с помощью фреймворков Jasmine или Mocha. Настройте запуск тестов в headless-режиме (без эмулятора) для скорости, либо используйте эмуляторы/симуляторы, если тесты требуют UI. В GitLab CI можно использовать сервисы-контейнеры для запуска Android Emulator.
```
run_tests:
stage: test
dependencies:
- install_dependencies
script:
- tns test android --justlaunch
```
Финальный этап — деплой. Собранные артефакты (APK-файлы) можно автоматически загружать на внутренний сервер для тестирования, в Google Play Console (через API) или в сервисы типа Firebase App Distribution. Для iOS загрузка в TestFlight также может быть автоматизирована с помощью Fastlane. Интеграция Fastlane в CI/CD пайплайн — это лучшая практика для мобильной разработки.
Учитывайте российские особенности: время доступа к репозиториям npm и Maven может быть увеличено. Рассмотрите возможность использования локальных или российских зеркал (например, для npm можно использовать Yandex Registry или другие локальные прокси). Это ускорит процесс установки зависимостей и сделает его более стабильным.
Не забывайте про безопасность. Помимо использования защищенных переменных для ключей, настройте правила срабатывания пайплайна (только для определенных веток, например, `main` или `develop`). Регулярно обновляйте базовые Docker-образы и версии инструментов в конфигурации.
Автоматизация в NativeScript — это не роскошь, а необходимость для профессиональной разработки. Она минимизирует человеческие ошибки, ускоряет обратную связь и позволяет команде сосредоточиться на написании кода, а не на рутинных операциях. Начните с простого пайплайна, который только устанавливает зависимости и запускает тесты, и постепенно добавляйте новые этапы, адаптируя процесс под нужды вашего проекта и команды.
Автоматизация сборки и тестирования в NativeScript: пошаговая инструкция для российских разработчиков
Подробное пошаговое руководство по настройке CI/CD пайплайна для проекта на NativeScript с учетом выбора инструментов и вендоров, актуальных для российских разработчиков. Рассматриваются этапы от установки зависимостей до сборки и деплоя.
317
2
Комментарии (9)