Udostępnij za pośrednictwem


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:

  1. Połącz się z kontem platformy Azure:

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

Następne kroki