Share via


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 etmenizi ve dağıtmanızı sağlar. Bu makalede, npm paketinin herhangi bir CI/CD sistemiyle nasıl kullanılacağı gösterilmektedir. Azure DevOps ile işlem hattı ayarlamak için bkz. Stream Analytics işi için CI/CD işlem hattı oluşturmak üzere Azure DevOps kullanma.

Stream Analytics projeniz yoksa, Visual Studio Code kullanarak bir proje oluşturun veya var olan bir projeyi Azure portal 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

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

Eski ARM şablonu gelecekte kullanım dışı bırakılacaktır. Bundan sonra yalnızca aracılığıyla build --v2 oluşturulan şablonlar güncelleştirmeleri veya hata düzeltmelerini alacak.

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

Build komutu bir anahtar sözcük söz dizimi denetimi yapar ve Azure Resource Manager (ARM) şablonları oluşturur.

Bağımsız Değişken Açıklama
--project Mutlak veya göreli yolu 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.

Ö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şturulduysa, çıkış klasörünün altında oluşturulan iki JSON dosyası görürsünüz:

  • ARM şablon dosyası: [ProjectName].JobTemplate.json
  • ARM 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'dır. Azure'a dağıtmadan önce değerleri ayarlamanız gerekir.

"Input_EntryStream_sharedAccessPolicyKey": {
  "value": null
}

Azure Data Lake Store 1. Nesil için Yönetilen Kimliği çıkış havuzu olarak kullanmak için Azure'a dağıtmadan önce PowerShell kullanarak hizmet sorumlusuna Erişim sağlamanız gerekir. Resource Manager şablonuyla Yönetilen Kimlik ile ADLS 1. Nesil'i dağıtma hakkında daha fazla bilgi edinin.

Yerel olarak çalıştırma

Projeniz yerel giriş dosyaları belirttiyse, komutunu kullanarak localrun bir Stream Analytics betiğini yerel olarak çalıştırabilirsiniz.

azure-streamanalytics-cicd localrun -project <projectFullPath> [-outputPath <outputPath>] [-customCodeZipFilePath <zipFilePath>]
Bağımsız Değişken Açıklama
--project Mutlak veya göreli yolu 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ıldıklarında UDF veya seri durumdan çıkarıcı gibi C# özel kodu için zip dosyasının yolu. DLL'leri bir zip dosyasında 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 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 kullanabilirsiniz.

Test çalışması ekleme

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 yolu kullanarak asaproj.json dosyasını belirtin.
--testConfigPath Test yapılandırma dosyasının yolu. Belirtilmezse, dosya \ test içinde asaproj.json dosyasının geçerli dizininin altında, varsayılan dosya adı testConfig.json ile aranılır. Mevcut değilse yeni bir dosya oluşturulur.

Ö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çerik eklenir. Aksi takdirde TestCases dizisine bir test çalışması eklenir. Gerekli giriş yapılandırmaları, giriş yapılandırma dosyasına göre otomatik olarak doldurulur. Testi çalıştırmadan önce her girişin ve beklenen çıkışın FilePath değeri belirtilmelidir. Bu yapılandırmayı el ile değiştirebilirsiniz.

Test doğrulamasının belirli bir çıkışı yoksaymasını istiyorsanız, beklenen çıkışı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 kullanabilirsiniz. Çıkış klasöründe test sonuçlarının özeti oluşturulur. İşlem, geçirilen tüm testler için kod 0 ile çıkar; -1 özel durum oluştu; Testler için -2 başarısız oldu.

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. Belirtilmezse, dosya \ test içinde asaproj.json dosyasının geçerli dizininin altında, varsayılan dosya adı testConfig.json ile aranılır.
--outputPath Test sonucu çıkış klasörünün yolu. Belirtilmezse, çıkış sonuç dosyaları geçerli dizine yerleştirilir.
--customCodeZipFilePath Kullanıldıklarında UDF veya seri durumdan çıkarıcı gibi özel kodlar için zip dosyasının yolu. DLL'leri zip dosyasına paketlemeniz ve yolu belirtmeniz gerekir.

Test çalışmaları yürütülürse çıkış klasöründe oluşturulan bir 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ı float değerleri içeriyorsa, üretilen değerlerde büyük olasılıkla başarısız bir teste yol açan küçük farklılıklarla karşılaşabilirsiniz. Bu, 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 istiyorsanız, üretilen değerlerinizin duyarlığını azaltmanız veya sonuçları el ile oluşturulan test sonuçlarıyla karşılaştırılacak şekilde hizalamanız gerekir.

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
    

ARM şablonlarıyla kaynakları dağıtma hakkında daha fazla bilgi için bkz. Resource Manager şablon dosyasıyla dağıtma ve Azure PowerShell.

Sonraki adımlar