Automatisera byggen, tester och distributioner av ett Stream Analytics-projekt

Med Azure Stream Analytics-paketet (ASA) CI/CD npm kan du automatiskt skapa, testa och distribuera dina Stream Analytics-projekt. Den här artikeln visar hur du använder npm-paketet med alla CI/CD-system. Information om hur du konfigurerar en pipeline med Azure DevOps finns i Använda Azure DevOps för att skapa en CI/CD-pipeline för ett Stream Analytics-jobb.

Om du inte har ett Stream Analytics-projekt skapar du ett med Visual Studio Code eller exporterar ett befintligt från Azure Portal.

Installation

Du kan ladda ned paketet från npm-platsen eller köra följande kommando i terminalen.

npm install -g azure-streamanalytics-cicd

Skapa projekt

Anteckning

Vi rekommenderar starkt att du använder --v2 alternativet för det uppdaterade ARM-mallschemat. Det uppdaterade schemat har färre parametrar men behåller samma funktioner som den tidigare versionen.

Den gamla ARM-mallen kommer att bli inaktuell i framtiden. Från och med nu får endast mallar som har skapats via build --v2 uppdateringar eller felkorrigeringar.

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

Build-kommandot gör en nyckelordssyntaxkontroll och genererar ARM-mallar (Azure Resource Manager).

Argument Description
--project Ange filen asaproj.json med absolut eller relativ sökväg.
--outputPath Ange utdatamappen för lagring av ARM-mallar med absolut eller relativ sökväg. Om outputPath inte anges placeras mallarna i den aktuella katalogen.

Exempel:

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

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

Om projektet har skapats visas två JSON-filer som skapats under utdatamappen:

  • ARM-mallfil: [ProjectName].JobTemplate.json
  • ARM-parameterfil: [ProjectName].JobTemplate.parameters.json

Standardvärdena för filen parameters.json kommer från dina projektinställningar. Om du vill distribuera till en annan miljö ersätter du värdena i enlighet med detta.

Standardvärdena för alla autentiseringsuppgifter är null. Du måste ange värdena innan du distribuerar till Azure.

"Input_EntryStream_sharedAccessPolicyKey": {
  "value": null
}

Om du vill använda Hanterad identitet för Azure Data Lake Store Gen1 som utdatamottagare måste du ge åtkomst till tjänstens huvudnamn med hjälp av PowerShell innan du distribuerar till Azure. Läs mer om hur du distribuerar ADLS Gen1 med hanterad identitet med Resource Manager mall.

Lokal körning

Om projektet har angett lokala indatafiler kan du köra ett Stream Analytics-skript lokalt med hjälp localrun av kommandot .

azure-streamanalytics-cicd localrun -project <projectFullPath> [-outputPath <outputPath>] [-customCodeZipFilePath <zipFilePath>]
Argument Description
--project Ange filen asaproj.json med absolut eller relativ sökväg.
--outputPath Ange utdatamappen för lagring av ARM-mallar med absolut eller relativ sökväg. Om outputPath inte anges placeras mallarna i den aktuella katalogen.
--customCodeZipFilePath Sökvägen till zip-filen för anpassad C#-kod, till exempel en UDF eller deserialiserare, om de används. Paketera DLL:erna i en zip-fil och ange den här sökvägen.

Exempel:

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

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

Anteckning

JavaScript UDF fungerar bara i Windows.

Automatiserat test

Du kan använda CI/CD npm-paketet för att konfigurera och köra automatiserade tester för Stream Analytics-projektet.

Lägga till ett testfall

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

Du hittar testfallen i testkonfigurationsfilen.

Argument Description
--project Ange filen asaproj.json med absolut eller relativ sökväg.
--testConfigPath Sökvägen till testkonfigurationsfilen. Om den inte anges genomsöks filen i \test under den aktuella katalogen i filen asaproj.json , med standardfilnamnet testConfig.json. En ny fil skapas om den inte finns.

Exempel:

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

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

Om testkonfigurationsfilen är tom läggs följande innehåll till i filen. Annars läggs ett testfall till i en TestCases-matris . Nödvändiga indatakonfigurationer fylls i automatiskt enligt indatakonfigurationsfilen. FilePath för varje indata och förväntade utdata måste anges innan testet körs. Du kan ändra den här konfigurationen manuellt.

Om du vill att testverifieringen ska ignorera en viss utdata anger du fältet Obligatoriskt för förväntade utdata till falskt.

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

Kör enhetstest

Du kan använda följande kommando för att köra flera testfall för projektet. En sammanfattning av testresultaten genereras i utdatamappen. Processen avslutas med kod 0 för alla tester som har godkänts. -1 för undantag inträffade; -2 för tester misslyckades.

azure-streamanalytics-cicd test --project <projectFullPath> [--testConfigPath <testConfigFileFullPath>] [--outputPath <outputPath>] [--customCodeZipFilePath <zipFilePath>]
Argument Description
--project Sökvägen till filen asaproj.json .
--testConfigPath Sökvägen till testkonfigurationsfilen. Om den inte anges genomsöks filen i \test under den aktuella katalogen i filen asaproj.json , med standardfilnamnet testConfig.json.
--outputPath Sökvägen till testresultatets utdatamapp. Om den inte anges placeras utdataresultatfilerna i den aktuella katalogen.
--customCodeZipFilePath Sökvägen till zip-filen för anpassad kod, till exempel en UDF eller deserialiserare, om de används. Du måste paketera DLL:er för att zip-filen och ange sökvägen.

Om testfall körs hittar du en testResultSummary.json-fil som genereras i utdatamappen.

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

Anteckning

Om frågeresultatet innehåller flyttalvärden kan det uppstå små skillnader i de genererade värdena som leder till ett förmodligen misslyckat test. Detta baseras på de olika .NET-ramverken som driver Visual Studio- eller Visual Studio-motorn och testbearbetningsmotorn. Om du vill se till att testerna körs korrekt måste du minska precisionen för dina genererade värden eller justera resultaten för att jämföras manuellt med de genererade testresultaten.

Distribuera till Azure

Följ dessa steg för att distribuera Stream Analytics-projektet med ARM-mallar:

  1. Anslut till ditt Azure-konto:

    # Connect to Azure
    Connect-AzAccount
    # Set the Azure subscription
    Set-AzContext [SubscriptionID/SubscriptionName]
    
  2. Distribuera ditt Stream Analytics-projekt:

    $templateFile = ".\Deploy\ClickStream-Filter.JobTemplate.json"
    $parameterFile = ".\Deploy\ClickStream-Filter.JobTemplate.parameters.json"
    New-AzResourceGroupDeployment `
      -Name devenvironment `
      -ResourceGroupName myResourceGroupDev `
      -TemplateFile $templateFile `
      -TemplateParameterFile $parameterFile
    

Mer information om hur du distribuerar resurser med ARM-mallar finns i Distribuera med en Resource Manager mallfil och Azure PowerShell.

Nästa steg