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 Visual Studio Code lub wyeksportuj istniejącą z 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 teraz 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 ARM:
[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. Musisz ustawić wartości przed wdrożeniem na platformie Azure.
"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, należy zapewnić dostęp do jednostki usługi przy użyciu programu PowerShell przed wdrożeniem na platformie Azure. Dowiedz się więcej na temat wdrażania usługi ADLS Gen1 przy użyciu tożsamości zarządzanej za pomocą szablonu Resource Manager.
Uruchamianie lokalnie
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 deserializer, 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
Możesz użyć pakietu npm ciągłej integracji/ciągłego wdrażania, aby skonfigurować i uruchomić zautomatyzowane testy 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 jest wyszukiwany w pliku \test w bieżącym katalogu pliku asaproj.json z domyślną nazwą pliku testConfig.json. Nowy plik jest tworzony, 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 jest dodawany przypadek testowy. Niezbędne konfiguracje wejściowe są wypełniane automatycznie zgodnie z plikiem konfiguracji wejściowej. Przed uruchomieniem testu należy określić parametr FilePath poszczególnych danych wejściowych i oczekiwanych danych wyjściowych. Tę konfigurację można zmodyfikować ręcznie.
Jeśli chcesz, aby walidacja testu zignorowała określone dane wyjściowe, ustaw pole Wymagane 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
Aby uruchomić wiele przypadków testowych dla projektu, możesz użyć następującego polecenia. Podsumowanie wyników testu jest generowane w folderze wyjściowym. Proces kończy się z kodem 0 dla wszystkich testów, które zostały wykonane; -1 dla 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 jest wyszukiwany w pliku \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 deserializer, jeśli są używane. Należy 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 Visual Studio lub Visual Studio i aparat przetwarzania testów. Jeśli chcesz upewnić się, że testy są uruchamiane pomyślnie, musisz zmniejszyć precyzję 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]
Wdrażanie projektu 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 Resource Manager i Azure PowerShell.