Sdílet prostřednictvím


Automatizace sestavení, testů a nasazení projektu Stream Analytics

Balíček CI/CD NPM azure Stream Analytics (ASA) umožňuje automaticky sestavovat, testovat a nasazovat projekty Stream Analytics. Tento článek ukazuje, jak používat balíček npm s jakýmkoli systémem CI/CD. Pokud chcete nastavit kanál s Azure DevOps, přečtěte si téma Použití Azure DevOps k vytvoření kanálu CI/CD pro úlohu Stream Analytics.

Pokud nemáte projekt Stream Analytics, vytvořte ho pomocí editoru Visual Studio Code nebo ho exportujte z webu Azure Portal.

Instalace

Balíček si můžete stáhnout z webu npm nebo spustit následující příkaz v terminálu.

npm install -g azure-streamanalytics-cicd

Sestavení projektu

Poznámka:

Důrazně doporučujeme použít --v2 možnost aktualizovaného schématu šablony ARM. Aktualizované schéma má méně parametrů, ale zachovává stejné funkce jako předchozí verze.

Stará šablona ARM bude v budoucnu zastaralá. Od této chvíle budou aktualizace nebo opravy chyb dostávat jenom šablony vytvořené prostřednictvím build --v2 .

azure-streamanalytics-cicd build --v2 --project <projectFullPath> [--outputPath <outputPath>]

Příkaz sestavení kontroluje syntaxi klíčových slov a generuje šablony Azure Resource Manageru (ARM).

Argument Popis
--project Zadejte asaproj.json soubor pomocí absolutní nebo relativní cesty.
--outputPath Zadejte výstupní složku pro ukládání šablon ARM pomocí absolutní nebo relativní cesty. Pokud outputPath není zadaný, šablony se umístí do aktuálního adresáře.

Příklad:

# Go to the project directory
cd <path-to-the-project>

# Build project
azure-streamanalytics-cicd build --v2 --project ./asaproj.json --outputPath ./Deploy

Pokud se projekt úspěšně sestaví, zobrazí se ve výstupní složce dva soubory JSON:

  • Soubor šablony ARM: [ProjectName].JobTemplate.json
  • Soubor parametrů Azure Resource Manageru: [ProjectName].JobTemplate.parameters.json

Výchozí hodnoty souboru parameters.json pocházejí z nastavení projektu. Pokud chcete nasadit do jiného prostředí, nahraďte hodnoty odpovídajícím způsobem.

Výchozí hodnoty pro všechny přihlašovací údaje mají hodnotu null. Před nasazením do Azure musíte nastavit hodnoty.

"Input_EntryStream_sharedAccessPolicyKey": {
  "value": null
}

Pokud chcete jako výstupní jímku použít spravovanou identitu pro Azure Data Lake Store Gen1, musíte před nasazením do Azure poskytnout přístup k instančnímu objektu pomocí PowerShellu. Přečtěte si další informace o nasazení ADLS Gen1 se spravovanou identitou pomocí šablony Resource Manageru.

Spusťte místně .

Pokud váš projekt zadal místní vstupní soubory, můžete pomocí localrun příkazu spustit skript Stream Analytics místně.

azure-streamanalytics-cicd localrun -project <projectFullPath> [-outputPath <outputPath>] [-customCodeZipFilePath <zipFilePath>]
Argument Popis
--project Zadejte asaproj.json soubor pomocí absolutní nebo relativní cesty.
--outputPath Zadejte výstupní složku pro ukládání šablon ARM pomocí absolutní nebo relativní cesty. Pokud outputPath není zadaný, šablony se umístí do aktuálního adresáře.
--customCodeZipFilePath Cesta k souboru ZIP pro vlastní kód jazyka C#, například UDF nebo deserializátor, pokud se používají. Zabalte knihovny DLL do souboru ZIP a zadejte tuto cestu.

Příklad:

# Go to the project directory
cd <path-to-the-project>

# Run project locally
azure-streamanalytics-cicd localrun --project ./asaproj.json"

Poznámka:

Funkce definovaná uživatelem JavaScriptu funguje jenom ve Windows.

Automatizovaný test

Balíček NPM CI/CD můžete použít ke konfiguraci a spuštění automatizovaných testů pro váš projekt Stream Analytics.

Přidání testovacího případu

azure-streamanalytics-cicd addtestcase --project <projectFullPath> [-testConfigPath <testConfigFileFullPath>]

Testovací případy najdete v konfiguračním souboru testu.

Argument Popis
--project Zadejte asaproj.json soubor pomocí absolutní nebo relativní cesty.
--testConfigPath Cesta k testovacímu konfiguračnímu souboru. Pokud není zadaný, soubor se prohledá ve složce \test pod aktuálním adresářem souboru asaproj.json s výchozím názvem souboru testConfig.json. Pokud neexistuje, vytvoří se nový soubor.

Příklad:

# Go to the project directory
cd <path-to-the-project>

# Add a test case
azure-streamanalytics-cicd addtestcase --project ./asaproj.json

Pokud je konfigurační soubor testu prázdný, přidá se do souboru následující obsah. V opačném případě se testovací případ přidá do pole TestCases . Potřebné vstupní konfigurace se vyplní automaticky podle vstupního konfiguračního souboru. Před spuštěním testu musí být zadána cesta k souboru každého vstupu a očekávaného výstupu. Tuto konfiguraci můžete upravit ručně.

Pokud chcete, aby ověření testu ignoroval určitý výstup, nastavte požadované pole tohoto očekávaného výstupu na hodnotu 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
        }
      ]
    }
  ]
}

Spuštění testu jednotek

Následující příkaz můžete použít ke spuštění více testovacích případů pro váš projekt. Ve výstupní složce se vygeneruje souhrn výsledků testů. Proces se ukončí kódem 0 pro všechny úspěšné testy; -1 pro výjimku, došlo k výjimce; -2 pro testy se nezdařilo.

azure-streamanalytics-cicd test --project <projectFullPath> [--testConfigPath <testConfigFileFullPath>] [--outputPath <outputPath>] [--customCodeZipFilePath <zipFilePath>]
Argument Popis
--project Cesta k souboru asaproj.json .
--testConfigPath Cesta k testovacímu konfiguračnímu souboru. Pokud není zadaný, soubor se prohledá ve složce \test pod aktuálním adresářem souboru asaproj.json s výchozím názvem souboru testConfig.json.
--outputPath Cesta výstupní složky výsledků testu. Pokud není zadaný, výstupní výsledné soubory se umístí do aktuálního adresáře.
--customCodeZipFilePath Cesta k souboru ZIP pro vlastní kód, například UDF nebo deserializátor, pokud se používají. Knihovny DLL musíte zabalit do souboru ZIP a zadat cestu.

Pokud se spustí testovací případy, najdete ve výstupní složce testResultSummary.json soubor vygenerovaný.

{
  "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,
}

Poznámka:

Pokud výsledky dotazu obsahují hodnoty float, můžete zaznamenat mírné rozdíly ve vytvořených hodnotách, což vede k pravděpodobně neúspěšnému testu. To je založeno na různých rozhraních .NET Framework, které skládají modul sady Visual Studio nebo Visual Studio a modul pro zpracování testů. Pokud chcete zajistit úspěšné spuštění testů, budete muset snížit přesnost vytvořených hodnot nebo výsledky porovnat ručně s vygenerovanými výsledky.

Nasazení do Azure

Pokud chcete nasadit projekt Stream Analytics pomocí šablon ARM, postupujte takto:

  1. Připojte se ke svému účtu Azure:

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

Další informace o nasazení prostředků pomocí šablon ARM najdete v tématu Nasazení pomocí souboru šablon Resource Manageru a Azure PowerShellu.