Megosztás a következőn keresztül:


Stream Analytics-projektek buildjeinek, tesztjeinek és üzembe helyezésének automatizálása

Az Azure Stream Analytics (ASA) CI/CD npm csomagja lehetővé teszi a Stream Analytics-projektek automatikus létrehozását, tesztelését és üzembe helyezését. Ez a cikk bemutatja, hogyan használhatja az npm-csomagot bármely CI/CD-rendszerrel. A folyamat Azure DevOpsszal való beállításához lásd: CI/CD-folyamat létrehozása Stream Analytics-feladatokhoz az Azure DevOps használatával.

Ha nincs Stream Analytics-projektje, hozzon létre egyet a Visual Studio Code használatával, vagy exportáljon egy meglévőt a Azure Portal.

Telepítés

Letöltheti a csomagot az npm webhelyről, vagy futtathatja a következő parancsot a terminálon.

npm install -g azure-streamanalytics-cicd

Projekt létrehozása

Megjegyzés

Javasoljuk, hogy használja a --v2 frissített ARM-sablonséma beállítását. A frissített séma kevesebb paramétert használ, mégis ugyanazokat a funkciókat őrzi meg, mint az előző verzió.

A régi ARM-sablon a jövőben elavult lesz. Mostantól csak azok a sablonok kapnak frissítéseket vagy hibajavításokat, amelyeken keresztül build --v2 lettek létrehozva.

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

A build parancs egy kulcsszószintaxis-ellenőrzést végez, és Azure Resource Manager (ARM) sablonokat hoz létre.

Argumentum Leírás
--project Adja meg az asaproj.json fájlt abszolút vagy relatív elérési út használatával.
--outputPath Adja meg az ARM-sablonok abszolút vagy relatív elérési úttal történő tárolására szolgáló kimeneti mappát. Ha outputPath nincs megadva, a sablonok az aktuális könyvtárba kerülnek.

Példa:

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

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

Ha a projekt sikeresen létrejött, két JSON-fájl jön létre a kimeneti mappában:

  • ARM-sablonfájl: [ProjectName].JobTemplate.json
  • ARM-paraméterfájl: [ProjectName].JobTemplate.parameters.json

A parameters.json fájl alapértelmezett értékei a projekt beállításaiból származnak. Ha egy másik környezetben szeretne üzembe helyezni, cserélje le az értékeket ennek megfelelően.

Az összes hitelesítő adat alapértelmezett értékei null értékűek. Az Azure-ban való üzembe helyezés előtt be kell állítania az értékeket.

"Input_EntryStream_sharedAccessPolicyKey": {
  "value": null
}

Ahhoz, hogy az Azure Data Lake Store Gen1 felügyelt identitását kimeneti fogadóként használhassa, az Azure-ban való üzembe helyezés előtt a PowerShell használatával hozzáférést kell biztosítania a szolgáltatásnévhez. További információ az ADLS Gen1 felügyelt identitással való üzembe helyezéséről Resource Manager sablonnal.

Helyi futtatás

Ha a projekt helyi bemeneti fájlokat adott meg, a paranccsal helyileg localrun futtathat Stream Analytics-szkriptet.

azure-streamanalytics-cicd localrun -project <projectFullPath> [-outputPath <outputPath>] [-customCodeZipFilePath <zipFilePath>]
Argumentum Leírás
--project Adja meg az asaproj.json fájlt abszolút vagy relatív elérési út használatával.
--outputPath Adja meg az ARM-sablonok abszolút vagy relatív elérési úttal történő tárolására szolgáló kimeneti mappát. Ha outputPath nincs megadva, a sablonok az aktuális könyvtárba kerülnek.
--customCodeZipFilePath Az egyéni C#-kód zip-fájljának elérési útja, például UDF vagy deszerializáló, ha használják őket. Csomagolja be a DLL-eket egy zip-fájlba, és adja meg ezt az elérési utat.

Példa:

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

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

Megjegyzés

A JavaScript UDF csak Windows rendszeren működik.

Automatizált teszt

A CI/CD npm csomag használatával automatikus teszteket konfigurálhat és futtathat a Stream Analytics-projekthez.

Teszteset hozzáadása

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

A teszteseteket a tesztkonfigurációs fájlban találja.

Argumentum Leírás
--project Adja meg az asaproj.json fájlt abszolút vagy relatív elérési út használatával.
--testConfigPath A tesztkonfigurációs fájl elérési útja. Ha nincs megadva, a rendszer a \test fájlban keres az asaproj.json fájl aktuális könyvtárában, az alapértelmezett testConfig.json fájlnévvel. Új fájl jön létre, ha nem létezik.

Példa:

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

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

Ha a tesztkonfigurációs fájl üres, a következő tartalom lesz hozzáadva a fájlhoz. Ellenkező esetben a rendszer egy tesztesetet ad hozzá egy TestCases tömbhöz . A szükséges bemeneti konfigurációk automatikusan kitöltődnek a bemeneti konfigurációs fájlnak megfelelően. A teszt futtatása előtt meg kell adni az egyes bemenetek és a várt kimenetEk FilePath-útvonalát. Ezt a konfigurációt manuálisan módosíthatja.

Ha azt szeretné, hogy a tesztérvényesítés figyelmen kívül hagyjon egy bizonyos kimenetet, állítsa a várt kimenet Kötelező mezőjét false (hamis) értékre.

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

Egységteszt futtatása

A következő paranccsal több tesztesetet is futtathat a projekthez. A teszteredmények összegzése a kimeneti mappában jön létre. A folyamat a 0-s kóddal lép ki az összes sikeres teszthez; -1 kivétel történt; A -2 teszt sikertelen volt.

azure-streamanalytics-cicd test --project <projectFullPath> [--testConfigPath <testConfigFileFullPath>] [--outputPath <outputPath>] [--customCodeZipFilePath <zipFilePath>]
Argumentum Leírás
--project Az asaproj.json fájl elérési útja.
--testConfigPath A tesztkonfigurációs fájl elérési útja. Ha nincs megadva, a rendszer a \test fájlban keres az asaproj.json fájl aktuális könyvtárában, az alapértelmezett testConfig.json fájlnévvel.
--outputPath A teszteredmény kimeneti mappájának elérési útja. Ha nincs megadva, a kimeneti eredményfájlok az aktuális könyvtárba kerülnek.
--customCodeZipFilePath A zip-fájl elérési útja egyéni kódhoz, például UDF-hez vagy deszerializálóhoz, ha használják őket. A DLL-eket zip-fájlba kell csomagolnia, és meg kell adnia az elérési utat.

Ha teszteseteket hajt végre, a kimeneti mappában létrejön egy testResultSummary.json fájl.

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

Megjegyzés

Ha a lekérdezési eredmények lebegőpontos értékeket tartalmaznak, előfordulhat, hogy a létrehozott értékek között kis eltéréseket tapasztal, ami valószínűleg sikertelen teszthez vezet. Ez a Visual Studio vagy a Visual Studio motort és a tesztfeldolgozó motort alkotó különböző .NET-keretrendszereken alapul. Ha biztos szeretne lenni abban, hogy a tesztek sikeresen lefutnak, csökkentenie kell a létrehozott értékek pontosságát, vagy a manuálisan összehasonlítandó eredményeket a létrehozott teszteredményekhez kell igazítania.

Üzembe helyezés az Azure-ban

A Stream Analytics-projekt ARM-sablonokkal való üzembe helyezéséhez kövesse az alábbi lépéseket:

  1. Csatlakozás az Azure-fiókhoz:

    # Connect to Azure
    Connect-AzAccount
    # Set the Azure subscription
    Set-AzContext [SubscriptionID/SubscriptionName]
    
  2. A Stream Analytics-projekt üzembe helyezése:

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

Az erőforrások ARM-sablonokkal való üzembe helyezésével kapcsolatos további információkért lásd: Üzembe helyezés Resource Manager sablonfájllal és Azure PowerShell.

Következő lépések