Dela via


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 valfritt 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

Kommentar

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 beskrivning
--project Ange den asaproj.json filen med hjälp av 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
  • Azure Resource Manager-parameterfil: [ProjectName].JobTemplate.parameters.json

Standardvärdena för parameters.json fil kommer från projektinställningarna. 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.

Kör lokalt

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 beskrivning
--project Ange den asaproj.json filen med hjälp av 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 deserializer, 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"

Kommentar

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 ditt Stream Analytics-projekt.

Lägga till ett testfall

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

Du hittar testfallen i testkonfigurationsfilen.

Argument beskrivning
--project Ange den asaproj.json filen med hjälp av 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 asaproj.json-filen, 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 ett visst utdata anger du fältet Obligatoriskt för förväntade utdata till 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
        }
      ]
    }
  ]
}

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 beskrivning
--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 asaproj.json-filen, 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 deserializer, om de används. Du måste paketera DLL:er för att zip-filen och ange sökvägen.

Om testfall körs kan du hitta 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,
}

Kommentar

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.