Builds, Tests und Bereitstellungen eines Stream Analytics-Projekts automatisieren
Mit dem Azure Stream Analytics (ASA) CI/CD npm-Paket können Sie Ihre Stream Analytics-Projekte automatisch erstellen, testen und bereitstellen. In diesem Artikel wird beschrieben, wie Sie das npm-Paket mit einem beliebigen CI/CD-System verwenden. Informationen zum Einrichten einer Pipeline mit Azure DevOps finden Sie unter Eine CI/CD-Pipeline für einen Stream Analytics-Auftrag mit Azure DevOps erstellen.
Wenn Sie kein Stream Analytics-Projekt haben, erstellen Sie ein Projekt mit Visual Studio Code, oder exportieren Sie ein vorhandenes Projekt aus dem Azure-Portal.
Installation
Sie können das Paket von der npm-Website herunterladen oder den folgenden Befehl in Ihrem Terminal ausführen.
npm install -g azure-streamanalytics-cicd
Erstellen des Projekts
Hinweis
Es wird dringend empfohlen, die Option --v2
für das aktualisierte ARM-Vorlagenschema zu verwenden. Das aktualisierte Schema verfügt über weniger Parameter, hat jedoch weiterhin die gleiche Funktionalität wie die vorherige Version.
Die alte ARM-Vorlage wird in Zukunft als veraltet markiert. Von nun an erhalten nur Vorlagen, die über build --v2
erstellt wurden, Updates oder Fehlerbehebungen.
azure-streamanalytics-cicd build --v2 --project <projectFullPath> [--outputPath <outputPath>]
Der Build-Befehl führt eine Überprüfung der Schlüsselwortsyntax durch und generiert die Azure Resource Manager (ARM)-Vorlagen.
Argument | BESCHREIBUNG |
---|---|
--project |
Geben Sie die Datei asaproj.json mithilfe des absoluten oder relativen Pfads an. |
--outputPath |
Geben Sie den Ausgabeordner zum Speichern von ARM-Vorlagen mithilfe des absoluten oder relativen Pfads an. Wenn outputPath nicht angegeben ist, werden die Vorlagen im aktuellen Verzeichnis abgelegt. |
Beispiel:
# Go to the project directory
cd <path-to-the-project>
# Build project
azure-streamanalytics-cicd build --v2 --project ./asaproj.json --outputPath ./Deploy
Wenn das Projekt erfolgreich erstellt wurde, werden zwei JSON-Dateien im Ausgabeordner angezeigt:
- ARM-Vorlagendatei:
[ProjectName].JobTemplate.json
- ARM-Parameterdatei:
[ProjectName].JobTemplate.parameters.json
Die Standardwerte für die Datei parameters.json stammen aus Ihren Projekteinstellungen. Wenn Sie die Bereitstellung in einer anderen Umgebung ausführen möchten, ersetzen Sie die Werte entsprechend.
Die Standardwerte für alle Anmeldeinformationen sind NULL. Sie müssen die Werte festlegen, bevor Sie eine Bereitstellung in Azure ausführen.
"Input_EntryStream_sharedAccessPolicyKey": {
"value": null
}
Wenn Sie die verwaltete Identität für Azure Data Lake Store Gen1 als Ausgabesenke verwenden möchten, müssen Sie vor der Bereitstellung in Azure per PowerShell den Zugriff auf den Dienstprinzipal ermöglichen. Weitere Informationen hierzu finden Sie im Artikel zum Thema Bereitstellen von ADLS Gen1 mit verwalteter Identität per Resource Manager-Vorlage.
Lokales Ausführen
Wenn in Ihrem Projekt lokale Eingabedateien angegeben sind, können Sie ein Stream Analytics-Skript lokal ausführen, indem Sie den localrun
-Befehl verwenden.
azure-streamanalytics-cicd localrun -project <projectFullPath> [-outputPath <outputPath>] [-customCodeZipFilePath <zipFilePath>]
Argument | BESCHREIBUNG |
---|---|
--project |
Geben Sie die Datei asaproj.json mithilfe des absoluten oder relativen Pfads an. |
--outputPath |
Geben Sie den Ausgabeordner zum Speichern von ARM-Vorlagen mithilfe des absoluten oder relativen Pfads an. Wenn outputPath nicht angegeben ist, werden die Vorlagen im aktuellen Verzeichnis abgelegt. |
--customCodeZipFilePath |
Der Pfad der ZIP-Datei für benutzerdefinierten C#-Code, z. B. eine UDF oder ein Deserialisierer, sofern verwendet. Verpacken Sie die DLLs in einer ZIP-Datei, und geben Sie diesen Pfad an. |
Beispiel:
# Go to the project directory
cd <path-to-the-project>
# Run project locally
azure-streamanalytics-cicd localrun --project ./asaproj.json"
Hinweis
JavaScript-UDFs können nur unter Windows verwendet werden.
Automatisierter Test
Sie können mit dem CI/CD-npm-Paket automatisierte Tests für Ihr Stream Analytics-Projekt konfigurieren und ausführen.
Hinzufügen eines Testfalls
azure-streamanalytics-cicd addtestcase --project <projectFullPath> [-testConfigPath <testConfigFileFullPath>]
Die Testfälle finden Sie in der Testkonfigurationsdatei.
Argument | BESCHREIBUNG |
---|---|
--project |
Geben Sie die Datei asaproj.json mithilfe des absoluten oder relativen Pfads an. |
--testConfigPath |
Der Pfad der Testkonfigurationsdatei. Wenn er nicht angegeben ist, wird die Datei in \test unter dem aktuellen Verzeichnis der Datei asaproj.json gesucht. Der Standarddateiname lautet testConfig.json. Falls die Datei noch nicht vorhanden ist, wird eine neue Datei erstellt. |
Beispiel:
# Go to the project directory
cd <path-to-the-project>
# Add a test case
azure-streamanalytics-cicd addtestcase --project ./asaproj.json
Wenn die Testkonfigurationsdatei leer ist, wird der folgende Inhalt zur die Datei hinzugefügt. Andernfalls wird einem TestCases-Array ein Testfall hinzugefügt. Erforderliche Eingabekonfigurationen werden automatisch entsprechend der Eingabekonfigurationsdatei festgelegt. Vor dem Ausführen des Tests muss der FilePath jeder Eingabe und erwarteten Ausgabe angegeben werden. Sie können diese Konfiguration manuell ändern.
Wenn bei der Testvalidierung eine bestimmte Ausgabe ignoriert werden soll, legen Sie das Feld Required der erwarteten Ausgabe auf false fest.
{
"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
}
]
}
]
}
Komponententest ausführen
Sie können mit dem folgenden Befehl mehrere Testfälle für Ihr Projekt ausführen. Im Ausgabeordner wird eine Zusammenfassung der Testergebnisse generiert. Für alle erfolgreichen Tests wird der Prozess mit dem Code 0 beendet. Wenn eine Ausnahme aufgetreten ist, wird er mit dem Code –1 beendet, und für Tests, bei denen ein Fehler aufgetreten ist, wird der Prozess mit dem Code 2 beendet.
azure-streamanalytics-cicd test --project <projectFullPath> [--testConfigPath <testConfigFileFullPath>] [--outputPath <outputPath>] [--customCodeZipFilePath <zipFilePath>]
Argument | BESCHREIBUNG |
---|---|
--project |
Der Pfad der Datei asaproj.json. |
--testConfigPath |
Der Pfad zur Testkonfigurationsdatei. Wenn er nicht angegeben ist, wird die Datei in \test unter dem aktuellen Verzeichnis der Datei asaproj.json gesucht. Der Standarddateiname lautet testConfig.json. |
--outputPath |
Der Pfad des Ausgabeordners für Testergebnisse. Wenn er nicht angegeben ist, werden die Ausgabeergebnisdateien im aktuellen Verzeichnis abgelegt. |
--customCodeZipFilePath |
Der Pfad der ZIP-Datei für benutzerdefinierten Code, z. B. eine UDF oder ein Deserialisierer, sofern verwendet. Sie müssen die DLLs in eine ZIP-Datei packen und den Pfad angeben. |
Wenn Testfälle ausgeführt werden, finden Sie eine testResultSummary.json-Datei, die im Ausgabeordner generiert wurde.
{
"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,
}
Hinweis
Wenn die Abfrageergebnisse Gleitkommawerte enthalten, treten möglicherweise geringfügige Unterschiede in den erzeugten Werten auf, was dazu führen kann, dass der Test fehlschlägt. Dies basiert auf den verschiedenen .NET-Frameworks, die Visual Studio oder die Visual Studio-Engine und die Testverarbeitungs-Engine verwenden. Wenn Sie sicherstellen möchten, dass die Tests erfolgreich ausgeführt werden, müssen Sie die Genauigkeit der erzeugten Werte verringern oder die Ergebnisse manuell mit den generierten Testergebnissen abgleichen.
In Azure bereitstellen
Führen Sie die folgenden Schritte aus, um Ihr Stream Analytics-Projekt mithilfe von ARM-Vorlagen bereitzustellen:
Stellen Sie eine Verbindung mit Ihrem Azure-Konto her:
# Connect to Azure Connect-AzAccount # Set the Azure subscription Set-AzContext [SubscriptionID/SubscriptionName]
Stellen Sie Ihr Stream Analytics-Projekt bereit:
$templateFile = ".\Deploy\ClickStream-Filter.JobTemplate.json" $parameterFile = ".\Deploy\ClickStream-Filter.JobTemplate.parameters.json" New-AzResourceGroupDeployment ` -Name devenvironment ` -ResourceGroupName myResourceGroupDev ` -TemplateFile $templateFile ` -TemplateParameterFile $parameterFile
Weitere Informationen zum Bereitstellen von Ressourcen mit ARM-Vorlagen finden Sie unter Bereitstellen mit einer Resource Manager-Vorlagendatei und Azure PowerShell.