Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das Azure Stream Analytics (ASA)-CI/CD npm-Paket hilft Ihnen, Ihre Stream Analytics-Projekte automatisch zu erstellen, zu testen und bereitzustellen. In diesem Artikel wird beschrieben, wie Sie das npm-Paket mit einem beliebigen CI/CD-System verwenden. Informationen zum Einrichten einer Pipeline mithilfe von Azure DevOps finden Sie unter Use Azure DevOps to create a CI/CD pipeline for a Stream Analytics job.
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
Verwenden Sie die --v2 Option für das aktualisierte ARM-Vorlagenschema. Das aktualisierte Schema hat weniger Parameter, behält jedoch die gleiche Funktionalität wie die vorherige Version bei.
Die alte ARM-Vorlage ist veraltet. Nur Vorlagen, die über build --v2 erstellt wurden, erhalten Updates oder Fehlerbehebungen.
azure-streamanalytics-cicd build --v2 --project <projectFullPath> [--outputPath <outputPath>]
Der Befehl build führt eine Überprüfung der Schlüsselwortsyntax durch und generiert Azure Resource Manager (ARM)-Vorlagen.
| Argument | BESCHREIBUNG |
|---|---|
--project |
Geben Sie die asaproj.json Datei mithilfe eines absoluten oder relativen Pfads an. |
--outputPath |
Geben Sie den Ausgabeordner zum Speichern von ARM-Vorlagen mithilfe eines absoluten oder relativen Pfads an. Wenn Sie nicht angeben outputPath, 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 angezeigt, die unter dem Ausgabeordner erstellt wurden:
- ARM-Vorlagendatei:
[ProjectName].JobTemplate.json - Azure Resource Manager-Parameterdatei:
[ProjectName].JobTemplate.parameters.json
Die Standardwerte für die parameters.json Datei stammen aus den 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. Legen Sie die Werte fest, bevor Sie sie für Azure bereitstellen.
"Input_EntryStream_sharedAccessPolicyKey": {
"value": null
}
Um verwaltete Identität für Azure Data Lake Store Gen1 als Ausgabesenke zu verwenden, müssen Sie zugriff auf den Dienstprinzipal mithilfe von PowerShell bereitstellen, bevor Sie Azure bereitstellen. Weitere Informationen finden Sie unter Bereitstellen von ADLS Gen1 mit verwalteter Identität und einer Resource Manager-Vorlage.
Lokal ausführen
Wenn Ihr Projekt lokale Eingabedateien enthält, verwenden Sie den localrun Befehl, um ein Stream Analytics-Skript lokal auszuführen.
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, wie eine UDF oder einen Deserializer, falls Sie diese verwenden. 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 funktionieren nur für Windows.
Automatisierter Test
Verwenden Sie das CI/CD npm-Paket, um automatisierte Tests für Ihr Stream Analytics-Projekt zu konfigurieren und auszufü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 Sie dieses Argument nicht angeben, sucht das Tool unter dem aktuellen Verzeichnis der asaproj.json-Datei unter dem aktuellen Verzeichnis der Datei "\test" nach der Datei mit dem Standarddateinamen testConfig.json. Wenn die Datei nicht vorhanden ist, erstellt das Tool eine neue Datei. |
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, fügen Sie der Datei den folgenden Inhalt hinzu. Fügen Sie andernfalls einem Testcases-Array einen Testfall hinzu. Das Tool füllt automatisch die erforderlichen Eingabekonfigurationen gemäß der Eingabekonfigurationsdatei aus. Sie müssen den FilePath für jede Eingabe und die erwartete Ausgabe angeben, bevor Sie den Test ausführen. 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
Verwenden Sie den folgenden Befehl, um mehrere Testfälle für Ihr Projekt auszuführen. Der Prozess generiert eine Zusammenfassung der Testergebnisse im Ausgabeordner. Der Prozess wird mit Code 0 beendet, wenn alle Tests bestehen, -1 , wenn eine Ausnahme auftritt, und -2 , wenn Tests fehlschlagen.
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 Sie dieses Argument nicht angeben, sucht der Prozess unter dem aktuellen Verzeichnis der asaproj.json-Datei nach der Datei in \test, wobei der Standarddateiname testConfig.json. |
--outputPath |
Der Pfad des Ausgabeordners für Testergebnisse. Wenn Sie dieses Argument nicht angeben, platziert der Prozess die Ausgabeergebnisdateien im aktuellen Verzeichnis. |
--customCodeZipFilePath |
Der Pfad der ZIP-Datei für benutzerdefinierten Code wie UDF oder Deserialisierer, wenn sie verwendet werden. Sie müssen die DLLs in eine ZIP-Datei packen und den Pfad angeben. |
Wenn Sie Testfälle ausführen, 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 Float-Werte enthalten, können geringfügige Unterschiede in den erzeugten Werten auftreten, die zu einem wahrscheinlich fehlgeschlagenen Test führen. Dieser Unterschied basiert auf den verschiedenen .NET Frameworks, die das Visual Studio- oder Visual Studio-Modul und das Testverarbeitungsmodul aktivieren. Um sicherzustellen, dass die Tests erfolgreich ausgeführt werden, verringern Sie die Genauigkeit der erzeugten Werte, oder richten Sie die Ergebnisse aus, um die Ergebnisse manuell mit den generierten Testergebnissen zu vergleichen.
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 mithilfe von ARM-Vorlagen finden Sie unter Deploy with a Resource Manager template file and Azure PowerShell.