Automatyzowanie kompilacji, testów i wdrożeń projektu usługi Stream Analytics
Pakiet npm ciągłej integracji/ciągłego wdrażania usługi Azure Stream Analytics (ASA) umożliwia automatyczne kompilowanie, testowanie i wdrażanie projektów usługi Stream Analytics. W tym artykule pokazano, jak używać pakietu npm z dowolnym systemem ciągłej integracji/ciągłego wdrażania. Aby skonfigurować potok za pomocą usługi Azure DevOps, zobacz Tworzenie potoku ciągłej integracji/ciągłego wdrażania dla zadania usługi Stream Analytics przy użyciu usługi Azure DevOps.
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
Kompilowanie projektu
Uwaga
Zdecydowanie zalecamy użycie --v2
opcji zaktualizowanego schematu szablonu usługi ARM. Zaktualizowany schemat ma mniej parametrów, ale zachowuje te same funkcje co poprzednia wersja.
Stary szablon usługi ARM zostanie wycofany w przyszłości. Od tej pory tylko szablony utworzone za pośrednictwem build --v2
programu będą otrzymywać aktualizacje lub poprawki błędów.
azure-streamanalytics-cicd build --v2 --project <projectFullPath> [--outputPath <outputPath>]
Polecenie kompilacji sprawdza składnię słowa kluczowego i generuje szablony usługi 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 usługi ARM przy użyciu ścieżki bezwzględnej lub względnej. Jeśli outputPath nie zostanie określony, szablony zostaną umieszczone w bieżącym 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 został utworzony pomyślnie, zobaczysz dwa pliki JSON utworzone w folderze wyjściowym:
- Plik szablonu usługi 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.
Wartości domyślne dla wszystkich poświadczeń mają wartość null. Przed wdrożeniem na platformie Azure musisz ustawić wartości.
"Input_EntryStream_sharedAccessPolicyKey": {
"value": null
}
Aby użyć tożsamości zarządzanej dla usługi Azure Data Lake Store Gen1 jako ujścia danych wyjściowych, przed wdrożeniem na platformie Azure należy podać dostęp do jednostki usługi przy użyciu programu PowerShell. Dowiedz się więcej na temat wdrażania usługi ADLS Gen1 przy użyciu tożsamości zarządzanej przy użyciu szablonu usługi Resource Manager.
Uruchamianie polecenia w środowisku lokalnym
Jeśli projekt określił lokalne pliki wejściowe, możesz uruchomić skrypt usługi Stream Analytics lokalnie przy użyciu localrun
polecenia .
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 usługi ARM przy użyciu ścieżki bezwzględnej lub względnej. Jeśli outputPath nie zostanie 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 są używane. 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
Funkcja UDF języka JavaScript działa tylko w systemie Windows.
Test automatyczny
Pakiet npm ciągłej integracji/ciągłego wdrażania umożliwia konfigurowanie i uruchamianie testów automatycznych dla projektu usługi 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 zostanie określony, plik zostanie przeszukany w katalogu \test w bieżącym katalogu pliku asaproj.json z domyślną nazwą pliku testConfig.json. Nowy plik zostanie utworzony, jeśli nie istnieje. |
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, do pliku zostanie dodana następująca zawartość. W przeciwnym razie do tablicy TestCases zostanie dodany przypadek testowy. Niezbędne konfiguracje wejściowe są wypełniane automatycznie zgodnie z plikiem konfiguracji wejściowej. Przed uruchomieniem testu należy określić ścieżkę FilePath poszczególnych danych wejściowych i oczekiwanych danych wyjściowych. 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
Możesz użyć następującego polecenia, aby uruchomić wiele przypadków testowych dla projektu. Podsumowanie wyników testów jest generowane w folderze wyjściowym. Proces kończy działanie z kodem 0 dla wszystkich testów, które zostały wykonane; -1 w przypadku wystąpienia wyjątku; -2 dla testów nie powiodło się.
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 zostanie określony, plik zostanie przeszukany w katalogu \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 zostanie określony, pliki wyników wyjściowych zostaną umieszczone 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 przypadki testowe są wykonywane, 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 prowadzących do prawdopodobnie nieudanego testu. Jest to oparte na różnych platformach .NET, które zasilają aparat programu Visual Studio lub Visual Studio oraz aparat przetwarzania testów. Jeśli chcesz upewnić się, że testy są uruchamiane pomyślnie, musisz zmniejszyć dokładność wygenerowanych wartości lub wyrównać wyniki do porównania ręcznie z wygenerowanymi wynikami 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 Wdrażanie przy użyciu pliku szablonu usługi Resource Manager i programu Azure PowerShell.