Автоматизация сборок, тестов и развертываний проекта Stream Analytics
Пакет CI/CD npm Azure Stream Analytics (ASA) позволяет автоматически создавать, тестировать и развертывать проекты Stream Analytics. В этой статье показано, как использовать пакет npm с любой системой CI/CD. Сведения о настройке конвейера с помощью Azure DevOps см. в статье "Использование Azure DevOps" для создания конвейера CI/CD для задания Stream Analytics.
Если у вас нет проекта Stream Analytics, создайте его с помощью Visual Studio Code или экспортируйте существующий из портал Azure.
Установка
Пакет можно скачать с сайта npm или выполнить следующую команду в терминале.
npm install -g azure-streamanalytics-cicd
Построить проект
Примечание.
Настоятельно рекомендуется использовать --v2
параметр для обновленной схемы шаблона ARM. Обновленная схема имеет меньше параметров, но сохраняет те же функции, что и предыдущая версия.
Старый шаблон ARM будет нерекомендуем в будущем. Теперь только созданные build --v2
шаблоны будут получать обновления или исправления ошибок.
azure-streamanalytics-cicd build --v2 --project <projectFullPath> [--outputPath <outputPath>]
Команда сборки выполняет проверку синтаксиса ключевых слов и создает шаблоны Azure Resource Manager (ARM).
Аргумент | Description |
---|---|
--project |
Укажите файл asaproj.json с помощью абсолютного или относительного пути. |
--outputPath |
Укажите выходную папку для хранения шаблонов ARM с помощью абсолютного или относительного пути. Если outputPath этот параметр не указан, шаблоны помещаются в текущий каталог. |
Пример:
# Go to the project directory
cd <path-to-the-project>
# Build project
azure-streamanalytics-cicd build --v2 --project ./asaproj.json --outputPath ./Deploy
Если проект успешно создан, в выходной папке вы увидите два ФАЙЛА JSON, созданные в выходной папке:
- Файл шаблона ARM:
[ProjectName].JobTemplate.json
- Файл параметров Azure Resource Manager:
[ProjectName].JobTemplate.parameters.json
Значения по умолчанию для файла parameters.json поступают из параметров проекта. Если вы хотите развернуть в другой среде, замените значения соответствующим образом.
Значения по умолчанию для всех учетных данных — NULL. Перед развертыванием в Azure необходимо задать значения.
"Input_EntryStream_sharedAccessPolicyKey": {
"value": null
}
Чтобы в качестве приемника выходных данных использовать управляемое удостоверение для Azure Data Lake Storage 1-го поколения, предоставите доступ субъекту-службе с помощью PowerShell перед развертыванием в Azure. Дополнительные сведения см. в разделе о развертывании ADLS 1-го поколения с управляемым удостоверением с помощью шаблона Resource Manager.
Локальное выполнение .
Если проект содержит указанные локальные входные файлы, можно запустить скрипт Stream Analytics локально с помощью команды localrun
.
azure-streamanalytics-cicd localrun -project <projectFullPath> [-outputPath <outputPath>] [-customCodeZipFilePath <zipFilePath>]
Аргумент | Description |
---|---|
--project |
Укажите файл asaproj.json с помощью абсолютного или относительного пути. |
--outputPath |
Укажите выходную папку для хранения шаблонов ARM с помощью абсолютного или относительного пути. Если outputPath этот параметр не указан, шаблоны помещаются в текущий каталог. |
--customCodeZipFilePath |
Путь к ZIP-файлу для пользовательского кода C#, например UDF или десериализатора, если они используются. Упакуйте библиотеки DLL в ZIP-файл и укажите этот путь. |
Пример:
# Go to the project directory
cd <path-to-the-project>
# Run project locally
azure-streamanalytics-cicd localrun --project ./asaproj.json"
Примечание.
Определяемая пользователем функция JavaScript работает только в Windows.
Автоматический тест
Пакет npm CI/CD можно использовать для настройки и запуска автоматических тестов для проекта Stream Analytics.
Добавление тестового случая
azure-streamanalytics-cicd addtestcase --project <projectFullPath> [-testConfigPath <testConfigFileFullPath>]
Тестовые случаи можно найти в файле конфигурации теста.
Аргумент | Description |
---|---|
--project |
Укажите файл asaproj.json с помощью абсолютного или относительного пути. |
--testConfigPath |
Путь к файлу конфигурации теста. Если он не указан, файл выполняется поиск в папке \test в текущем каталоге файла asaproj.json с именем файла по умолчанию testConfig.json. Новый файл создается, если он не существует. |
Пример:
# Go to the project directory
cd <path-to-the-project>
# Add a test case
azure-streamanalytics-cicd addtestcase --project ./asaproj.json
Если файл конфигурации теста пуст, в файл добавляется следующее содержимое. В противном случае тестовый случай добавляется в массив TestCases . Необходимые входные конфигурации автоматически заполняются в соответствии с входным файлом конфигурации. Перед выполнением теста необходимо указать значение FilePath для каждого входного и ожидаемого выходного файла. Эту конфигурацию можно изменить вручную.
Если вы хотите, чтобы проверка теста проигнорировала определенные выходные данные, задайте для поля Required этих ожидаемых выходных данных значение false.
{
"Script": [Absolute path of your script],
"TestCases": [
{
"Name": "Case 1",
"Inputs": [
{
"InputAlias": [Input alias string],
"Type": "Data Stream",
"Format": "JSON",
"FilePath": [Required],
"ScriptType": "InputMock"
}
],
"ExpectedOutputs": [
{
"OutputAlias": [Output alias string],
"FilePath": [Required],
"IgnoreFields": [Fields to ignore for test validation, e.g., ["col1", "col2"]],
"Required": true
}
]
}
]
}
Запуск модульного теста
Чтобы запустить несколько тестовых случаев для проекта, можно использовать следующую команду. Сводка с результатами теста создается в выходной папке. Процесс завершается с кодом 0, если пройдены все тесты, -1 в случае исключения и -2, если тесты не пройдены.
azure-streamanalytics-cicd test --project <projectFullPath> [--testConfigPath <testConfigFileFullPath>] [--outputPath <outputPath>] [--customCodeZipFilePath <zipFilePath>]
Аргумент | Description |
---|---|
--project |
Путь к файлу asaproj.json . |
--testConfigPath |
Путь к файлу конфигурации теста. Если он не указан, файл выполняется поиск в папке \test в текущем каталоге файла asaproj.json с именем файла по умолчанию testConfig.json. |
--outputPath |
Путь к выходной папке результатов теста. Если он не указан, выходные файлы результатов помещаются в текущий каталог. |
--customCodeZipFilePath |
Путь к ZIP-файлу для пользовательского кода, например UDF или десериализатора, если они используются. Необходимо упаковать библиотеки DLL в ZIP-файл и указать путь. |
Если выполняются тестовые случаи, можно найти файл testResultSummary.json , созданный в выходной папке.
{
"Total": (integer) total_number_of_test_cases,
"Passed": (integer) number_of_passed_test_cases,
"Failed": (integer) number_of_failed_test_cases,
"Script": (string) absolute_path_to_asaql_file,
"Results": [ (array) detailed_results_of_test_cases
{
"Name": (string) name_of_test_case,
"Status": (integer) 0(passed)_or_1(failed),
"Time": (string) time_span_of_running_test_case,
"OutputMatched": [ (array) records_of_actual_outputs_equal_to_expected_outputs
{
"OutputAlias": (string) output_alias,
"ExpectedOutput": (string) path_to_the_expected_output_file,
"Output": (string) path_to_the_actual_output_file
}
],
"OutputNotEqual": [ (array) records_of_actual_outputs_not_equal_to_expected_outputs
{
"OutputAlias": (string) output_alias,
"ExpectedOutput": (string) path_to_the_expected_output_file,
"Output": (string) path_to_the_actual_output_file
}
],
"OutputMissing": [ (array) records_of_actual_outputs_missing
{
"OutputAlias": (string) output_alias,
"ExpectedOutput": (string) path_to_the_expected_output_file,
"Output": ""
}
],
"OutputUnexpected": [ (array) records_of_actual_outputs_unexpected
{
"OutputAlias": (string) output_alias,
"ExpectedOutput": "",
"Output": (string) path_to_the_actual_output_file
}
],
"OutputUnrequired": [ (array) records_of_actual_outputs_unrequired_to_be_checked
{
"OutputAlias": (string) output_alias,
"ExpectedOutput": (string) path_to_the_expected_output_file,
"Output": (string) path_to_the_actual_output_file
}
]
}
],
"Time": (string) time_span_of_running_all_test_cases,
}
Примечание.
Если результаты запроса содержат значения с плавающей запятой, могут возникнуть незначительные различия в созданных значениях, что приводит к возможному сбою теста. Это основано на различных платформах .NET, которые питают подсистему Visual Studio или Visual Studio и модуль тестирования. Если вы хотите убедиться, что тесты выполняются успешно, необходимо уменьшить точность созданных значений или выровнять результаты, которые будут сравниваться вручную с созданными результатами теста.
Развернуть в Azure
Чтобы развернуть проект Stream Analytics с помощью шаблонов ARM, выполните следующие действия.
Подключитесь к учетной записи Azure:
# Connect to Azure Connect-AzAccount # Set the Azure subscription Set-AzContext [SubscriptionID/SubscriptionName]
Разверните проект Stream Analytics:
$templateFile = ".\Deploy\ClickStream-Filter.JobTemplate.json" $parameterFile = ".\Deploy\ClickStream-Filter.JobTemplate.parameters.json" New-AzResourceGroupDeployment ` -Name devenvironment ` -ResourceGroupName myResourceGroupDev ` -TemplateFile $templateFile ` -TemplateParameterFile $parameterFile
Дополнительные сведения о развертывании ресурсов с помощью шаблонов ARM см. в статье "Развертывание с помощью файла шаблона Resource Manager" и Azure PowerShell.