Создание, сборка и обслуживание приложения

Все рутинные операции по созданию инфраструктуры и тестированию приложения выполняются с помошью консольной утилиты wasaby-cli, которая позволяет автоматизировать данные процессы в режиме разработки.

Полная инструкция по всем вариантам использования wasaby-cli доступна на github.

Установка wasaby-cli

Установка утилиты осуществляется через пакетный менеджер npm или yarn.

  1. Создайте npm-пакет, выполнив консольную команду:
    npm init
  2. Установите пакет wasaby-cli в качестве development зависимости.

Перед выполнением команды ниже замените строку [xx.yyyy] на версию нужной вам ветви разработки например 20.4000.

Установка через npm:

npm install git+https://github.com/saby/wasaby-cli.git#rc-[xx.yyyy] --save-dev

Создание интерфейсного модуля

Создать модуль можно с помощью wasaby-cli, выполнив команду:

npx wasaby-cli --tasks=createModule --path=client/MyModule

Также интерфейсный модуль можно создать, используя Genie. Достаточно только создать .s3mod файл и заполнить его список зависимостей. Остальные шаги, описанные в статье по ссылке, выполнять не нужно.

Установка зависимостей приложения

Созданный выше ~~~~интерфейсный модуль будет входной точкой для построения приложения.

Для установки зависимостей приложения выполните команду:

npx wasaby-cli --tasks=initStore

При этому будут загружены все интерфейсный модули, от которых оно зависит.

Сборка приложения

Сборка приложения осуществляется в отдельной папке с именем application.

Для сборки выполните команду:

npx wasaby-cli --tasks=build

При этом будут собраны ресурсы приложения, сконвертированые в исполняемый браузером/Node.js формат. Например, скомпилируются .less и .ts файлы.

Полный список аргументов сборки

  • rep=[name] — название пакета Wasaby, который нужно нужно установить вручную (соответствует значению поля name в package.json устанавливаемого пакета).
  • tasks=initStore,build — выполняемые сценарии: initStore — получить исходные коды, build — собрать приложение.
  • rc=rc-[xx.yyyy] — версия собираемого приложения по Tensor Flow.
  • [name]=my/branch/name — ветка пакета [name]: указывается в случае, если требуется подключить указанную ветку пакета вместо rc-ветки.

Гибкая настройка зависимостей

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

Пример загрузки исходных кодов приложения из пакета wasaby-controls версии 20.4000:

npx wasaby-cli --rep=wasaby-controls --tasks=initStore --rc=rc-20.4000

Пример загрузки исходных кодов приложения с веткой 20.4000/feature/name пакета saby-types:

npx wasaby-cli --tasks=initStore --saby-types=20.4000/feature/name

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

Например, можно проверить совместимость веток из разных репозиториев:

npx wasaby-cli --rep=saby-types --tasks=initStore,build --rc=rc-20.4000 --saby-types=20.4000/feature/name --wasaby-controls=20.4000/feature/another-name

Воспроизведение ошибок сборки локально

Если нужно воспроизвести ошибку из тестов по ветке, то в логе сборки в jenkins, находим строку запуска скрипта cli.js и копируем все параметры, содержащие хеши. Это коммиты, зафиксированные в текущем SDK Платформы, пути можно не указывать. По умолчанию приложение развернется в папку application.

В итоге должно получиться что-то похожее на:

npx wasaby-cli --rep=saby-types --tasks=initStore,build --rc=rc-20.1000 
   --saby-types=20.1000/feature/my-branch 
   --sbis3-ws=4ae65466602f2453f7c143d40ae563af33828b1c 
   --sbis3controls=f5c318e25c1b0e8d8fe38e97f688665e99f7259c
   --rmi=453da78358ab7dfd9f562bb95febc82a3d97f7a6
   --saby-i18n=fad76c6549505f7aff2e91085a5371bc773d7f99 
   --wasaby-app=6d75caaa03764e86e493bf6d430c24efa9473a31 --Router=8372219cf3af6331cb19cc400a6bc1ec461508af 
   --saby-ui=df23ecf8e9ec9bc7b9ef9e969dcef4fcd32346c3

Юнит-тестирование

Об идеологии и правилах разработки юнит-тестов читайте в отдельной статье. Здесь же мы разберем команды для их запуска в различных окружениях.

Запуск юнит-тестов

Для запуска тестов используйте сценарий startTest:

npx wasaby-cli --tasks=startTest

По умолчанию результат выполнения тестов складывается в папку artifacts. Для вывода результатов в консоль используйте аргумент report:

npx wasaby-cli --tasks=startTest --report=console

Для запуска тестов в браузере запустите http-сервер командой:

npx wasaby-cli --tasks=startTest --server

В консоли будет написано, на каком порту он запустился (свободный порт выбирается автоматически). Для выполнения юнит-тестов в браузере откройте URL http://localhost:port, заменив номер порта на указанный в консоли.

Полный список аргументов, используемых для запуска юнит-тестов:

  • tasks=startTest — запустить сценарий юнит-тестирования.
  • rep=[name] — название тестируемого пакета (соответствует name в package.json).
  • rc=rc-version — запустить юнит-тесты только по измененным модулям. Если нужно запустить все тесты, можно не указывать.
  • only — запускать тесты только по одному репозиторию, указанному в rep.

Отладка юнит-тестов

Подробнее про отладку тестов под Node.js читайте в отдельной статье.

Автоматизация

Для удобства вы можете добавить указанные выше команды в раздел scripts файла package.json. Типовой набор выглядит так:

"scripts": {
   "build": "npm run build:deps && npm run build:app",
   "build:deps": "wasaby-cli --tasks=initStore",
   "build:app": "wasaby-cli --tasks=build",
   "start": "wasaby-cli --tasks=startTest --server",
   "test": "wasaby-cli %NODE_DEBUG_OPTION% --tasks=startTest --node --report=console"
}

Многие IDE предоставляют возможность запускать эти скрипты через визуальный интерфейс.

См. также