Автоматизация сборки и тестирования в NativeScript: пошаговая инструкция для российских разработчиков

Пошаговое руководство по настройке CI/CD для NativeScript-проектов с учетом особенностей российского IT-рынка: выбор инструментов, работа с зависимостями, сборка под iOS/Android и соблюдение требований законодательства.
Разработка мобильных приложений на NativeScript позволяет использовать JavaScript или TypeScript для создания нативных интерфейсов под iOS и Android. Однако ручные процессы сборки, тестирования и деплоя быстро становятся узким местом. Автоматизация — ключ к скорости и качеству. В российских реалиях, с учетом особенностей доступа к сервисам и требований законодательства, этот процесс имеет свою специфику. Данная инструкция проведет вас через основные этапы.

Первый шаг — настройка среды разработки. Убедитесь, что у вас установлены Node.js (рекомендуется LTS-версия), NativeScript CLI и JDK для Android. Для iOS-сборки потребуется macOS с Xcode. В условиях санкций доступ к некоторым ресурсам Apple может быть осложнен, поэтому российские разработчики часто используют macOS-серверы, размещенные у локальных облачных провайдеров, или сосредотачиваются на кроссплатформенной разработке под Android. Установите также Git для контроля версий.

Создайте новый проект: `tns create my-app --template tns-template-blank-ts`. Структура проекта будет содержать папки `app` (исходный код), `platforms` (нативные платформы) и `hooks` (для кастомных скриптов). Инициализируйте репозиторий Git: `git init` и создайте `.gitignore` файл, исключающий `node_modules`, `platforms`, `hooks` и каталоги сборки.

Сердце автоматизации — CI/CD пайплайн. В России популярны как международные решения (GitHub Actions, несмотря на ограничения), так и локальные альтернативы: GitLab CI (многие компании разворачивают свои инстансы GitLab), Jenkins или отечественный Forgejo. Рассмотрим настройку на примере GitLab CI, как часто используемого в корпоративной среде.

Создайте в корне проекта файл `.gitlab-ci.yml`. Определите этапы (stages): install, test, build_android, build_ios, deploy. Начните с этапа установки зависимостей. Чтобы ускорить процесс и не зависеть от внешних репозиториев npm, рекомендуется использовать локальный прокси- или mirror-сервер для npm-пакетов, например, Verdaccio. В скрипте укажите ваш корпоративный registry: `npm config set registry https://your-corporate-npm-registry.local`.

Этап тестирования. NativeScript-приложения можно тестировать с помощью Jasmine, Mocha или Jest. Установите Jest: `npm install --save-dev jest @nativescript/jest`. Настройте `jest.config.js`. Создайте простые unit-тесты для ваших сервисов и моделей. В `.gitlab-ci.yml` добавьте шаг запуска тестов: `npm run test`. Для UI-тестирования рассмотрите Appium или детерминированные тесты с помощью библиотеки @nativescript/testing. В российских реалиях важно иметь возможность запуска тестов без доступа к зарубежным сервисам SaaS, поэтому предпочтение отдается self-hosted решениям.

Автоматическая сборка для Android. Настройте этап `build_android`. Вам понадобится образ Docker с Android SDK. Можно использовать готовый, например, `circleci/android:api-30-node`. В скрипте установите переменные окружения для Android, например, `ANDROID_HOME`. Затем выполните команды: `npm run clean` и `npm run build android --release --key-store-path  --key-store-password  --key-store-alias  --key-store-alias-password `. Храните чувствительные данные (пароли от keystore) не в коде, а в защищенных переменных GitLab CI (`Settings > CI/CD > Variables`). В России юридически важно соблюдать 152-ФЗ (о персональных данных), поэтому хранилище секретов должно быть развернуто внутри юрисдикции.

Сборка для iOS сложнее из-за требования к macOS. В GitLab CI для этого используют `macos` раннеры. Если у вашей организации нет своего парка Mac-серверов, можно арендовать их у российских облачных провайдеров, предлагающих macOS-инстансы (это дорого, но легально). Альтернатива — использовать сервисы вроде Bitrise или Codemagic, но их доступность и юридические аспекты работы с данными нужно тщательно проверять. Скрипт сборки: `npm run build ios --release --for-device`. Вам также потребуется загрузить сертификаты и provisioning profile в CI-окружение.

После успешной сборки артефакты (`.apk` и `.ipa` файлы) нужно сохранить. Используйте директиву `artifacts` в `.gitlab-ci.yml`, указав пути к файлам и срок их хранения. Для внутреннего распространения можно настроить автоматическую загрузку на ваш корпоративный сервер или в хранилище типа S3-совместимого (например, на базе Яндекс Облака или VK Cloud Solutions).

Рассмотрим также автоматизацию обновления зависимостей. Создайте отдельный пайплайн или задачу по расписанию (schedule), которая будет запускать `npm outdated` и автоматически создавать Merge Request с обновлениями минорных и патч-версий с помощью таких инструментов, как RenovateBot или Dependabot. Учитывайте, что их SaaS-версии могут быть недоступны, поэтому стоит рассмотреть self-hosted версию Renovate.

Линтинг и проверка кода — важная часть контроля качества. Настройте в пайплайне этап `lint` с запуском ESLint и TSLint (если используете TypeScript). Можно интегрировать SonarQube для статического анализа кода, развернув его сервер внутри компании.

В условиях импортозамещения и работы с государственными заказчиками может возникнуть требование использовать отечественные ОС. Тестирование совместимости NativeScript-приложений с Aurora OS или «Альт» может быть включено в пайплайн как отдельный этап на эмуляторах или реальных устройствах.

Не забывайте про уведомления. Настройте интеграцию CI/CD с корпоративным мессенджером (например, Telegram или VK Teams) для отправки оповещений об успешных или проваленных сборках.

Автоматизация в NativeScript — это не роскошь, а необходимость для командной разработки. Начиная с простого пайплайна для сборки APK, вы постепенно сможете добавить этапы тестирования, анализа кода и деплоя. Учитывая российские реалии, делайте ставку на self-hosted решения, локальные mirror-репозитории и тщательное управление секретами в соответствии с законодательством. Это обеспечит стабильность, скорость разработки и независимость от внешних факторов.
317 2

Комментарии (9)

avatar
nzgaco3ui 02.04.2026
Всё расписано четко и по шагам. Как раз внедряю pipeline по этой инструкции в нашем небольшом отделе.
avatar
ym5khx3t 02.04.2026
Не согласен, что автоматизация так критична для небольших проектов. Часто проще сделать вручную.
avatar
nuffm0k4hi1q 02.04.2026
Хорошо, что подняли тему. Многие до сих пор игнорируют CI/CD, а потом удивляются багам в продакшене.
avatar
f8wen3j5o 03.04.2026
Отличная инструкция, как раз искал как автоматизировать сборку в условиях санкций. Жду продолжения!
avatar
u2uhdtn3e 03.04.2026
А есть ли особенности для работы с AppStore и Google Play из России? Хотелось бы увидеть это в следующей части.
avatar
an8a0dwmfs 03.04.2026
Статья хорошая, но не хватает конкретных примеров конфигов для CI/CD. Теории много, практики мало.
avatar
u337iaptj40 03.04.2026
Автоматизация тестирования в NativeScript реально спасла нам кучу времени. Рекомендую всем командам.
avatar
zigtyyxz8 03.04.2026
Для новичков, пожалуй, сложновато. Лучше бы начать с более базовых понятий про сам NativeScript.
avatar
5e2rtd91myi 04.04.2026
Спасибо за акцент на российских реалиях! Информация про альтернативы заблокированным сервисам была бы полезна.
Вы просмотрели все комментарии