Stream Analytics projesinin derlemelerini, testlerini ve dağıtımlarını otomatikleştirme

Azure Stream Analytics (ASA) CI/CD npm paketi, Stream Analytics projelerinizi otomatik olarak oluşturmanıza, test edip dağıtmanıza yardımcı olur. Bu makalede herhangi bir CI/CD sistemiyle npm paketinin nasıl kullanılacağı gösterilmektedir. Azure DevOps kullanarak işlem hattı ayarlamak için bkz. Stream Analytics işi için CI/CD işlem hattı oluşturmak için Azure DevOps kullanma.

Stream Analytics projeniz yoksa Visual Studio Code kullanarak bir proje oluşturun veya Mevcut bir projeyi Azure portalından dışarı aktarın.

Yükleme

Paketi npm sitesinden indirebilir veya terminalinizde aşağıdaki komutu çalıştırabilirsiniz.

npm install -g azure-streamanalytics-cicd

Proje oluşturma

Not

--v2 Güncelleştirilmiş ARM şablonu şeması için seçeneğini kullanın. Güncelleştirilmiş şemada daha az parametre vardır, ancak önceki sürümle aynı işlevselliği korur.

Eski ARM şablonu kullanım dışı bırakıldı. Yalnızca build --v2 aracılığıyla oluşturulan şablonlar güncelleştirmeler veya hata düzeltmeleri alır.

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

build komutu bir anahtar sözcük söz dizimi denetimi gerçekleştirir ve Azure Resource Manager (ARM) şablonları oluşturur.

Bağımsız değişken Açıklama
--project Mutlak veya göreli bir yol kullanarak asaproj.json dosyasını belirtin.
--outputPath MUTLAK veya göreli bir yol kullanarak ARM şablonlarını depolamak için çıkış klasörünü belirtin. Eğer outputPath belirtmezseniz, şablonlar geçerli dizine gider.

Örnek:

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

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

Proje başarıyla oluşturulursa çıkış klasörünün altında oluşturulan iki JSON dosyası görürsünüz:

  • ARM şablon dosyası: [ProjectName].JobTemplate.json
  • Azure Resource Manager parametre dosyası: [ProjectName].JobTemplate.parameters.json

parameters.json dosyasının varsayılan değerleri proje ayarlarınızdan gelir. Başka bir ortama dağıtmak istiyorsanız, değerleri uygun şekilde değiştirin.

Tüm kimlik bilgileri için varsayılan değerler null'tır. Azure dağıtmadan önce değerleri ayarlayın.

"Input_EntryStream_sharedAccessPolicyKey": {
  "value": null
}

Azure Data Lake Store 1. Nesil için Yönetilen Kimlik'i çıkış havuzu olarak kullanmak için, Azure dağıtmadan önce PowerShell kullanarak hizmet sorumlusuna erişim sağlamanız gerekir. Daha fazla bilgi edinmek için bkz. Yönetilen Kimlik ve Kaynak Yöneticisi şablonuyla ADLS Gen1 dağıtın.

Yerel ortamda çalıştır.

Projeniz yerel giriş dosyaları içeriyorsa, bir Stream Analytics betiğini yerel olarak çalıştırmak için komutunu kullanın localrun .

azure-streamanalytics-cicd localrun -project <projectFullPath> [-outputPath <outputPath>] [-customCodeZipFilePath <zipFilePath>]
Bağımsız değişken Açıklama
--project Mutlak veya göreli yol kullanarak asaproj.json dosyasını belirtin.
--outputPath ARM Şablonlarını mutlak veya göreli yol kullanarak depolamak için çıkış klasörünü belirtin. Belirtilmezse outputPath şablonlar geçerli dizine yerleştirilir.
--customCodeZipFilePath Kullanıyorsanız, C# özel kodu için, örneğin bir UDF veya deseriyalize edici, zip dosyasının yolu. DLL'leri bir zip dosyasına paketleyin ve bu yolu belirtin.

Örnek:

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

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

Not

JavaScript UDF'leri yalnızca Windows üzerinde çalışır.

Otomatik test

Stream Analytics projeniz için otomatikleştirilmiş testleri yapılandırmak ve çalıştırmak için CI/CD npm paketini kullanın.

Test senaryosu ekle

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

Test çalışmalarını test yapılandırma dosyasında bulabilirsiniz.

Bağımsız değişken Açıklama
--project Mutlak veya göreli yol kullanarak asaproj.json dosyasını belirtin.
--testConfigPath Test yapılandırma dosyasının yolu. Bu bağımsız değişkeni belirtmezseniz, araç, asaproj.json dosyasının bulunduğu geçerli dizinin altındaki \test klasöründe dosyayı arar ve varsayılan dosya adı testConfig.json olur. Dosya yoksa, araç yeni bir dosya oluşturur.

Örnek:

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

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

Test yapılandırma dosyası boşsa, dosyaya aşağıdaki içeriği ekleyin. Aksi takdirde, TestCases dizisine bir test çalışması ekleyin. Araç, giriş yapılandırma dosyasına göre gerekli giriş yapılandırmalarını otomatik olarak doldurur. Testi çalıştırmadan önce her giriş ve beklenen çıkış için FilePath belirtmelisiniz. Bu yapılandırmayı el ile değiştirebilirsiniz.

Test doğrulamasının belirli bir çıkışı yoksaymasını istiyorsanız, beklenen çıktının Gerekli alanını false olarak ayarlayın.

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

Birim testi çalıştırma

Projeniz için birden çok test çalışması çalıştırmak için aşağıdaki komutu kullanın. İşlem, çıkış klasöründe test sonuçlarının özetini oluşturur. Tüm testler geçerse işlem 0 koduyla, bir özel durum oluşursa -1 ve testler başarısız olursa -2 ile çıkar.

azure-streamanalytics-cicd test --project <projectFullPath> [--testConfigPath <testConfigFileFullPath>] [--outputPath <outputPath>] [--customCodeZipFilePath <zipFilePath>]
Bağımsız değişken Açıklama
--project asaproj.json dosyasının yolu.
--testConfigPath Test yapılandırma dosyasının yolu. Bu bağımsız değişkeni belirtmezseniz, işlemasaproj.jsondosyasının geçerli dizini altında \test dosyasındaki dosyayı arar ve varsayılan dosya adı testConfig.json.
--outputPath Test sonucu çıkış klasörünün yolu. Bu bağımsız değişkeni belirtmezseniz, işlem çıkış sonuç dosyalarını geçerli dizine yerleştirir.
--customCodeZipFilePath UDF veya deserializator gibi özel kodlar kullanılıyorsa, zip dosyasının yolu. DLL'leri zip dosyası olarak paketlemeniz ve yolu belirtmeniz gerekir.

Test senaryolarını çalıştırırsanız, çıktı klasöründe oluşturulan testResultSummary.json dosyasını bulabilirsiniz.

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

Not

Sorgu sonuçları kayan değerler içeriyorsa, büyük olasılıkla başarısız bir teste yol açan üretilen değerlerde küçük farklılıklarla karşılaşabilirsiniz. Bu fark, Visual Studio veya Visual Studio altyapısını ve test işleme altyapısını güçlendiren farklı .NET çerçevelerini temel alır. Testlerin başarıyla çalıştırıldığından emin olmak için, üretilen değerlerinizin duyarlığını azaltın veya sonuçları el ile oluşturulan test sonuçlarıyla karşılaştırılacak şekilde hizalayın.

Azure’a dağıtın

STREAM Analytics projenizi ARM şablonlarını kullanarak dağıtmak için şu adımları izleyin:

  1. Azure hesabınıza bağlanın:

    # Connect to Azure
    Connect-AzAccount
    # Set the Azure subscription
    Set-AzContext [SubscriptionID/SubscriptionName]
    
  2. Stream Analytics projenizi dağıtma:

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

Daha fazla bilgi için, ARM şablonları kullanarak kaynakları dağıtma konusunda, Bir Kaynak Yöneticisi şablon dosyası ve Azure PowerShell ile Dağıtım bölümüne bakın.