Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Pakiet npm do ciągłej integracji/ciągłego wdrażania usługi Azure Stream Analytics (ASA) pomaga automatycznie kompilować, testować i wdrażać Twoje projekty Stream Analytics. W tym artykule pokazano, jak używać pakietu npm z dowolnym systemem CI/CD. Aby skonfigurować potok przy użyciu Azure DevOps, więcej informacji znajdziesz w Użyj Azure DevOps, aby utworzyć potok ciągłej integracji/ciągłego wdrażania dla zadania usługi Stream Analytics.
Jeśli nie masz projektu usługi Stream Analytics, utwórz go przy użyciu programu Visual Studio Code lub wyeksportuj istniejącą z witryny Azure Portal.
Instalacja
Pakiet można pobrać z witryny npm lub uruchomić następujące polecenie w terminalu.
npm install -g azure-streamanalytics-cicd
Budowanie projektu
Uwaga
Użyj opcji --v2 dla zaktualizowanego schematu szablonu ARM. Zaktualizowany schemat ma mniej parametrów, ale zachowuje tę samą funkcjonalność co poprzednia wersja.
Stary szablon ARM jest wycofany. Tylko szablony utworzone za pośrednictwem build --v2 otrzymują aktualizacje lub poprawki błędów.
azure-streamanalytics-cicd build --v2 --project <projectFullPath> [--outputPath <outputPath>]
Polecenie build wykonuje sprawdzanie składni słowa kluczowego i generuje szablony Azure Resource Manager (ARM).
| Argument | opis |
|---|---|
--project |
Określ plik asaproj.json przy użyciu ścieżki bezwzględnej lub względnej. |
--outputPath |
Określ folder wyjściowy do przechowywania szablonów ARM przy użyciu ścieżki bezwzględnej lub względnej. Jeśli nie określisz outputPath, szablony trafią do bieżącego katalogu. |
Przykład:
# Go to the project directory
cd <path-to-the-project>
# Build project
azure-streamanalytics-cicd build --v2 --project ./asaproj.json --outputPath ./Deploy
Jeśli projekt zostanie utworzony pomyślnie, zobaczysz dwa pliki JSON utworzone w folderze wyjściowym:
- Plik szablonu ARM:
[ProjectName].JobTemplate.json - Plik parametrów usługi Azure Resource Manager:
[ProjectName].JobTemplate.parameters.json
Wartości domyślne pliku parameters.json pochodzą z ustawień projektu. Jeśli chcesz wdrożyć w innym środowisku, zastąp odpowiednio wartości.
Domyślne wartości dla wszystkich kredencjałów to null. Ustaw wartości przed wdrożeniem w Azure.
"Input_EntryStream_sharedAccessPolicyKey": {
"value": null
}
Aby użyć tożsamości zarządzanej dla Azure Data Lake Store Gen1 jako odbiornika danych wyjściowych, przed wdrażaniem do Azure należy zapewnić dostęp do jednostki usługi przy użyciu programu PowerShell. Aby dowiedzieć się więcej, zobacz deploy ADLS Gen1 z tożsamością zarządzaną przy użyciu szablonu Resource Manager.
Uruchom lokalnie
Jeśli projekt zawiera lokalne pliki wejściowe, użyj localrun polecenia , aby uruchomić skrypt usługi Stream Analytics lokalnie.
azure-streamanalytics-cicd localrun -project <projectFullPath> [-outputPath <outputPath>] [-customCodeZipFilePath <zipFilePath>]
| Argument | opis |
|---|---|
--project |
Określ plik asaproj.json przy użyciu ścieżki bezwzględnej lub względnej. |
--outputPath |
Określ folder wyjściowy do przechowywania szablonów ARM używając ścieżki bezwzględnej lub względnej. Jeśli outputPath nie jest określony, szablony zostaną umieszczone w bieżącym katalogu. |
--customCodeZipFilePath |
Ścieżka pliku zip dla kodu niestandardowego języka C#, takiego jak UDF lub deserializator, jeśli ich używasz. Spakuj biblioteki DLL do pliku zip i określ tę ścieżkę. |
Przykład:
# Go to the project directory
cd <path-to-the-project>
# Run project locally
azure-streamanalytics-cicd localrun --project ./asaproj.json"
Uwaga
UDF JavaScript działają tylko na Windows.
Test automatyczny
Użyj pakietu npm CI/CD, aby skonfigurować i uruchomić testy automatyczne dla projektu Stream Analytics.
Dodawanie przypadku testowego
azure-streamanalytics-cicd addtestcase --project <projectFullPath> [-testConfigPath <testConfigFileFullPath>]
Przypadki testowe można znaleźć w pliku konfiguracji testu.
| Argument | opis |
|---|---|
--project |
Określ plik asaproj.json przy użyciu ścieżki bezwzględnej lub względnej. |
--testConfigPath |
Ścieżka pliku konfiguracji testu. Jeśli nie określisz tego argumentu, narzędzie wyszukuje plik w katalogu \test w bieżącym katalogu pliku asaproj.json z domyślną nazwą pliku testConfig.json. Jeśli plik nie istnieje, narzędzie utworzy nowy plik. |
Przykład:
# Go to the project directory
cd <path-to-the-project>
# Add a test case
azure-streamanalytics-cicd addtestcase --project ./asaproj.json
Jeśli plik konfiguracji testu jest pusty, dodaj następującą zawartość do pliku. W przeciwnym razie dodaj przypadek testowy do tablicy TestCases . Narzędzie automatycznie wypełnia niezbędne konfiguracje wejściowe zgodnie z plikiem konfiguracji wejściowej. Przed uruchomieniem testu należy określić FilePath dla każdego pliku wejściowego i oczekiwanego pliku wyjściowego. Tę konfigurację można zmodyfikować ręcznie.
Jeśli chcesz, aby walidacja testu ignorowała określone dane wyjściowe, ustaw pole Wymagane dla tego oczekiwanego danych wyjściowych na wartość 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
}
]
}
]
}
Uruchamianie testu jednostkowego
Użyj następującego polecenia, aby uruchomić wiele przypadków testowych dla projektu. Proces generuje podsumowanie wyników testów w folderze wyjściowym. Proces kończy działanie z kodem 0 , jeśli wszystkie testy kończą się powodzeniem, -1 , jeśli wystąpi wyjątek, i -2 , jeśli testy zakończą się niepowodzeniem.
azure-streamanalytics-cicd test --project <projectFullPath> [--testConfigPath <testConfigFileFullPath>] [--outputPath <outputPath>] [--customCodeZipFilePath <zipFilePath>]
| Argument | opis |
|---|---|
--project |
Ścieżka pliku asaproj.json. |
--testConfigPath |
Ścieżka do pliku konfiguracji testu. Jeśli nie określisz tego argumentu, proces wyszukuje plik w \test w bieżącym katalogu pliku asaproj.json z domyślną nazwą pliku testConfig.json. |
--outputPath |
Ścieżka folderu wyjściowego wyniku testu. Jeśli nie określisz tego argumentu, proces umieszcza pliki wynikowe danych wyjściowych w bieżącym katalogu. |
--customCodeZipFilePath |
Ścieżka pliku zip dla kodu niestandardowego, takiego jak UDF lub deserializator, jeśli są używane. Musisz spakować biblioteki DLL do pliku zip i określić ścieżkę. |
Jeśli uruchamiasz przypadki testowe, możesz znaleźć plik testResultSummary.json wygenerowany w folderze wyjściowym.
{
"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,
}
Uwaga
Jeśli wyniki zapytania zawierają wartości zmiennoprzecinkowe, mogą wystąpić niewielkie różnice w wygenerowanych wartościach, które prowadzą do prawdopodobnie nieudanego testu. Ta różnica opiera się na różnych frameworkach .NET, które zasilają silnik Visual Studio oraz aparat przetwarzania testów. Aby upewnić się, że testy zakończą się pomyślnie, zmniejsz dokładność produkowanych wartości lub ręcznie dostosuj wyniki, które mają być porównane, do wygenerowanych wyników testu.
Wdróż na platformie Azure
Aby wdrożyć projekt usługi Stream Analytics przy użyciu szablonów usługi ARM, wykonaj następujące kroki:
Połącz się z kontem platformy Azure:
# Connect to Azure Connect-AzAccount # Set the Azure subscription Set-AzContext [SubscriptionID/SubscriptionName]Wdróż projekt usługi 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
Aby uzyskać więcej informacji na temat wdrażania zasobów przy użyciu szablonów usługi ARM, zobacz Wdróż z plikiem szablonu Menadżera zasobów i Azure PowerShell.