Share via


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:

  1. Stellen Sie eine Verbindung mit Ihrem Azure-Konto her:

    # Connect to Azure
    Connect-AzAccount
    # Set the Azure subscription
    Set-AzContext [SubscriptionID/SubscriptionName]
    
  2. 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.

Nächste Schritte